- ベストアンサー
ファイルの変換で文字化けを回避する方法
- ファイル中の文字列を一部書き換える処理をしていますが、日本語が文字化けしてしまいます。この問題を解決する方法を教えてください。
- ファイルの変換により、文字化けが発生する問題について質問です。日本語の文字列を書き換える処理を行った結果、文字が正しく表示されず、文字化けが発生してしまいました。この問題を回避する方法を教えていただけますか?
- ファイルの変換において、日本語が文字化けしてしまう問題について相談です。正規表現のreplaceメソッドを使って文字列を書き換える処理を行った結果、文字が正しく表示されず、読めない文字列になってしまいました。この問題を解決するために、どのような対策を取れば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1>UTF-8のファイルをUTF-8のままregEX.replaceをかけることはできれば、この問題は解決するように思われます。これは可能でしょうか? VBScript(WSH)では、基本的に文字コードは、Shift_JIS です。 なので、ファイルの読込は、シフトJISとして読み込まれます。 (その意味で"regEX.replaceをかけたときに強制的にShift_JISにしようとしていた"ではなく、読み込まれた時に既にShift_JIS になっています。特にこの場合は、変換がなされていないし変換時でないのは明らかです) ファイルのオープン時に文字コードをUnicode指定(UTF-8ではない)というのはできるのですが、(基本的に自力では)文字コードの変換はできません。 (VBScript を使って文字コードの変換を行うのに、ADOストリームオブジェクトを使う例がOKWaveでもでていました。 http://okwave.jp/qa1891964.html (上記は、エクセルVBAですが、ほぼ(As とか付けない)そのまま動くと思います) IEオブジェクトやXMLDOMオブジェクトなんかを使ってもできるかもしれません、後は、外部コマンドを利用するとか・)
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ウチ(XPPro)で試してみたところでは、そのような結果にはなりませんでした。 置換パターンである"テスト"が、test1.txt にそもそも含まれませんから、単に内容をコピーした test2.txt が作成されます。 東京都のあとにテストを挿入したものに変更すると、 東京都てすとに置換され、文字化けは起こりませんでした。 よくはわかりませんが、test1.txt の文字コードがShift_JIS ではないのではないでしょうか? 試してみたところでは、test1.txt の文字コードがUTF-8 である時、Shift_JIS として無理やり読み込むとそのように化けるようです。
補足
さっそくのヒントありがとうございます。 文字コードを調べてみるとBLUEPIXYさんのご指摘の通りです。私のケースでは、文字コードがUTF-8で、regEX.replaceをかけたときに強制的にShift_JISにしようとしていた可能性があります。 だとしますと、UTF-8のファイルをUTF-8のままregEX.replaceをかけることはできれば、この問題は解決するように思われます。これは可能でしょうか?
補足
ありがとうございました。その後試行錯誤の末、対処方法が分かりました。 最初にKconvFileでUTF-8からShift-JISにファイル変換しておいて、 rc = bobj.KconvFile(in_file, out_file, 1, 5) regEX.replace処理 その後さらにKconvFileでShift-JISからUTF-8にファイル変換すれば良いです。 rc = bobj.KconvFile(out_file, in_file, 5, 1) 手間はかかりますが、これで前に進めます。