4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

UTF-8以外のテキストファイルを読み込むには

2 posters

Go down

UTF-8以外のテキストファイルを読み込むには Empty UTF-8以外のテキストファイルを読み込むには

投稿 by M_Fujihara 2017-02-12, 10:24 pm

お騒がせ,すみません。

v16でUTF-8以外のテキストファイルを読み込むには,どうすれば良いでしょうか。

$DocPos:=Select document("Documents";"TEXT";"選択して下さい";Alias selection)
$text:=Document to text($DocPos)
CONVERT FROM TEXT($text;"UTF-8";$convertedBLOB)
$text:=BLOB to text($convertedBLOB;UTF8 C string)

としても変換してくれません。ちなみにこれではUTF-8でも化けたままで,2行目を
$text:=Document to text($DocPos;"UTF-8")
とすると化けない状態でテキストを作ります。

M_Fujihara

投稿数 : 84
登録日 : 2016/12/03

トップに戻る Go down

UTF-8以外のテキストファイルを読み込むには Empty Re: UTF-8以外のテキストファイルを読み込むには

投稿 by miyako 2017-02-15, 12:59 pm

UTF-8以外のテキストファイルをテキストに読むのであれば,

$fileName:=Select document(System folder(Documents folder);"txt";"選んでね";Package open)

If (OK=1)
$text:=Document to text(DOCUMENT;"windows-31j")
End if

みたいな感じになります。

ポイント

①Select documentの戻り値は,ファイル名(1個目)です。DocRefではありません。

また,ファイルタイプ惜別子(TEXTなど)は,旧MacOSの仕様ですので,UTIまたはファイル拡張子を指定したほうが無難です。

http://doc.4d.com/4Dv16/4D/16/Select-document.301-3036725.ja.html

②Document to textの第1引数はフルパスまたはストラクチャに隣接するファイル名です。Select documentの戻り値は渡せません。

http://doc.4d.com/4Dv16/4D/16/Document-to-text.301-3036713.ja.html

③Document to textはそれ自体が文字コード/改行コード変換の役割を担っています。BLOBを経由する必要はありません。

ちなみに,これはOKを更新せず,ON ERROR CALLの対象でもない,珍しいコマンドです。

④文字コード名は正確に指定する必要があります。

4Dは,Shift_JISだけでなく,Windows-31J(MicrosoftのJIS),X-Mac-Japanese(AppleのJIS)にも対応しています。

Shift_JISと指定した場合,機種に依存するNEC/IBM/MS/Apple拡張文字が"?"になるかもしれません。

文字コードを指定しなかった場合,BOM(バイトオーダーマーク)があれば,UTF-8,そうでなければANSI(環境の非Unicode文字コード。4Dの場合,v2004まで使用されていたWin/Mac可逆性を重視した特殊な変換テーブル)という判断になります。

https://ja.wikipedia.org/wiki/バイトオーダーマーク
https://ja.wikipedia.org/wiki/波ダッシュ

なお,

$text:=Document to text($DocPos;"UTF-8")

はUTF-8のドキュメントをテキストに読み込む,という意味ですから,これで化けないのであれば,そのドキュメントはUTF-8だということになります。

もっとも,前述したように,第1引数にSelect documentの戻り値(フルパスではない)は渡せませんから,読み込まれているのは選択したファイルではないかもしれません。

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

UTF-8以外のテキストファイルを読み込むには Empty Re: UTF-8以外のテキストファイルを読み込むには

投稿 by M_Fujihara 2017-02-21, 12:10 pm

遅くなりましたが,ありがとうございました。

Document to textは読み込む前に,文字化けがないか確認するのに有用ですね。

外部からのファイル読み込み,書き出しには,USE CHARACTER SETを付け加えました。

M_Fujihara

投稿数 : 84
登録日 : 2016/12/03

トップに戻る Go down

UTF-8以外のテキストファイルを読み込むには Empty Re: UTF-8以外のテキストファイルを読み込むには

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可