タイトル : Re^4: ファイルパスの機種依存文字を取得する方法について 投稿日 : 2014/11/28(Fri) 18:06 投稿者 : マサタロウ
マサタロウです。 > また、『Shift_JIS では区別されるが、Unicode では同じ文字として扱われる文字は区別できない』仕様です。 > たとえば、Shift_JIS では平方根記号が Chr(&H8795) と Chr(&H81E3) の二箇所にマップされていますが、 > VB5 は Unicode で管理される都合上、いずれも ChrW(&H221A) となってしまい、両者を区別できません。 > > ReDim sjis1(1) As Byte > ReDim sjis2(1) As Byte > sjis1(1) = &H95: sjis1(0) = &H87 > sjis2(1) = &H81: sjis2(0) = &HE3 > > Dim s1 As String, s2 As String > s1 = StrConv(sjis1, vbUnicode) > s2 = StrConv(sjis1, vbUnicode) > 's1 と s2 は同じ文字になってしまう 配列変数を再宣言して配列変数に文字コードを格納。 文字列型変数に、変数sjis1の内容を変換した文字列を格納。 sjis1はどこで宣言しているのか? s1とs2は同じコードなので同じ結果になることが分かる。 サンプルコードを実行したところ、ADODB.Streamでテキストファイルが 作成できました。 非日本語な漢字のニイを含むファイル名です。 デスクトップにパスを変更しても作成できました。 ADODB.Stream で検索したところ、以下のページを見つけました。 http://www.k-sugi.sakura.ne.jp/windows/vb/3650/ 上記ページのコードでパスとファイル名を変更して実行してみると、 自作拡張子のファイル内の内容がイミディエイトウィンドウで確認 できました。 パスとファイル名がきちんとしていませんでしたが、 上記ページの方法でうまくいくか試してみます。 > Const adSaveCreateOverWrite = 2 > Dim filePath1 As String, filePath2 As String > Dim stm As Object > '漢字2文字「ニイハオ」を含むファイル名。ニイの文字は非日本語な漢字。 > filePath1 = Environ("TEMP") & "\NIHAO1(" & ChrW(&H4F60) & ChrW(&H597D) & ").TXT" > filePath2 = Environ("TEMP") & "\NIHAO2(" & ChrW(&H4F60) & ChrW(&H597D) & ").TXT" > > 'ADODB.Stream は、Unicode パスをサポートしている > Set stm = CreateObject("ADODB.Stream") > stm.Open > stm.WriteText "Ni-Hao" > stm.SaveToFile filePath1, adSaveCreateOverWrite > stm.Close |