HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
1115
darumasanCSVファイルをUTF-8コードで出力したい4解決


darumasan

リンク

2024/11/15(Fri) 22:02:38|NO.102545

csvファイルにして書き出すのですがANSIではなくて、UTF-8で書き出す方法がわからず教えてください。
過去ログにもあるのだと思うのですが探しかねています。
作成しているプログラムでは今まで全てANSIで扱っておりhsp3utf.asをincludeできません。
ひとつのファイルだけUTF-8にして出力する必要がでてきたのです。
以下は一部分を切り出してコンパクトにしたサンプルです。
ご教授よろしくお願いいたします。

sdim write_buffer , 200 ;csv 書き出しbuffer sdim data_buf , 200,4,4 ;元データ,4cell x 4行 ;テストデータ生成 data_buf(0,0)="あ":data_buf(0,1)="い":data_buf(0,2)="う":data_buf(0,3)="え" data_buf(1,0)="あい":data_buf(1,1)="うえ":data_buf(1,2)="おか":data_buf(1,3)="きく" data_buf(2,0)="けこ":data_buf(2,1)="さしすせ":data_buf(2,2)="そ":data_buf(2,3)="たち" data_buf(3,0)="つ":data_buf(3,1)="てと":data_buf(3,2)="123":data_buf(3,3)=str(456) repeat 4 write_buffer += data_buf(cnt,0)+","+data_buf(cnt,1)+","+data_buf(cnt,2)+","+data_buf(cnt,3)+"\n" loop dialog "csv",17 if stat=0 : end notesel write_buffer notesave getpath(refstr,1) +".csv" noteunsel stop



この記事に返信する


正造

リンク

2024/11/15(Fri) 23:19:12|NO.102546

文字コード変換だけにはやや贅沢ですがhspinetでできます
実行ファイルを配布する際にhspinet.dllの同梱が必要になりますのでご注意ください

#include "hspinet.as" sdim write_buffer , 200 ;csv 書き出しbuffer sdim data_buf , 200,4,4 ;元データ,4cell x 4行 ;テストデータ生成 data_buf(0,0)="あ":data_buf(0,1)="い":data_buf(0,2)="う":data_buf(0,3)="え" data_buf(1,0)="あい":data_buf(1,1)="うえ":data_buf(1,2)="おか":data_buf(1,3)="きく" data_buf(2,0)="けこ":data_buf(2,1)="さしすせ":data_buf(2,2)="そ":data_buf(2,3)="たち" data_buf(3,0)="つ":data_buf(3,1)="てと":data_buf(3,2)="123":data_buf(3,3)=str(456) repeat 4 write_buffer += data_buf(cnt,0)+","+data_buf(cnt,1)+","+data_buf(cnt,2)+","+data_buf(cnt,3)+"\n" loop dialog "csv",17 if stat=0 : end nkfcnv write_buffer_utf8, write_buffer, "wS", strlen(write_buffer) bsave getpath(refstr,1) +".csv", write_buffer_utf8, strlen(write_buffer_utf8) stop



darumasan

リンク

2024/11/16(Sat) 11:21:07|NO.102548

hspinet.asをincludeしてnkfcnvコマンドを使うとのアドバイスありがとうございます。
早速やってみましたが、書き出したcsvを開くと、下記のように文字化けしているのです。
- - - - - - - - - - - - -
縺・縺・縺・縺・
縺ゅ> 縺・∴ 縺翫° 縺阪¥
縺代% 縺輔@縺吶○ 縺・縺溘■
縺、 縺ヲ縺ィ ・托シ抵シ・456
- - - - - - - - - - - - -
このcsvを新規Excelに「インポート」するとプレビュー画面で「元のファイル」の表示が
「Unicode(UTF-8)」と表示されてるので、bsaveでは正しくUTF-8で書き出されたかと
思うのですが、書き出したcsvを開くと文字化けしてしまうのは、なぜなのでしょうか?



TOMATO

リンク

2024/11/16(Sat) 13:04:54|NO.102549

ExcelでUTF-8なCSVファイルを読み込む際は先頭にBOMをつけないと、
Shift_JISと認識してしまい文字化けてしまいます。

バイト順マーク
https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E9%A0%86%E3%83%9E%E3%83%BC%E3%82%AF

例えば、以下のようにするとBOM付きで保存できます。


#include "hspinet.as" sdim write_buffer , 200 ;csv 書き出しbuffer sdim data_buf , 200,4,4 ;元データ,4cell x 4行 ;テストデータ生成 data_buf(0,0)="あ":data_buf(0,1)="い":data_buf(0,2)="う":data_buf(0,3)="え" data_buf(1,0)="あい":data_buf(1,1)="うえ":data_buf(1,2)="おか":data_buf(1,3)="きく" data_buf(2,0)="けこ":data_buf(2,1)="さしすせ":data_buf(2,2)="そ":data_buf(2,3)="たち" data_buf(3,0)="つ":data_buf(3,1)="てと":data_buf(3,2)="123":data_buf(3,3)=str(456) repeat 4 write_buffer += data_buf(cnt,0)+","+data_buf(cnt,1)+","+data_buf(cnt,2)+","+data_buf(cnt,3)+"\n" loop dialog "csv",17 if stat=0 : end nkfcnv write_buffer_utf8, write_buffer, "wS", strlen(write_buffer) filename = getpath(refstr,1) +".csv" bom = 0x00BFBBEF bsave filename, bom, 3 bsave filename, write_buffer_utf8, strlen(write_buffer_utf8), 3 stop



darumasan

リンク

2024/11/16(Sat) 16:45:48|NO.102552

正造様、TOMATO様 お二人の助言、大変ありがとうございました。
お陰様で目的のcsvファイルとして書き出せるようになりました。
この掲示板の有用さにも大変感謝いたします。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.102545への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.