2017年3月1日水曜日

SJISでWriteするとエラーになるけどReadしてもエラーにならない文字

CreateTextFileメソッドを使う際、デフォルトではASCIIファイルが作成されますが、特定の文字を含む文字列をASCIIファイルとして保存しようとするとエラーが発生します。
その具体例を作成しました。




以下ソース


起動画面



「Unicode」のチェックを外した状態で、charCode=771の文字を含むテキストをWriteしようとするとエラーになります。



「Unicode」のチェックを入れてWriteした場合はエラーになりません。



「notepad」を押すとメモ帳が起動します。
保存用ウィンドウを出してみると、「文字コード」が「Unicode」になっています。



Writeは「Unicode」のチェックの有無でエラーが出たり、出なかったりするのですがReadの方はUnicodeファイルを開く時にチェックが入っていなくても、ASCIIファイルを開く時にチェックが入っていてもエラーにはなりません。
ただし文字化けします。



↑でUnicodeとしてWriteして、↓でASCIIとしてReadした



↓UnicodeとしてReadした結果。



0 件のコメント:

コメントを投稿