- ベストアンサー
[VBS] Unicodeの文字化けを防ぎたい
VBSでフォルダの操作を行っています。 フォルダ名にUnicodeが含まれる場合エラーが発生します。 なんとか文字列を表示する事が出来ますでしょうか? 【文字化けサンプル.vbs】 ---------------------- REM Unicode(U+2776) str = "❶" REM 表示 msgbox str ---------------------- よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> VBSでフォルダの操作を行っています。 > フォルダ名にUnicodeが含まれる場合エラーが発生します。 > なんとか文字列を表示する事が出来ますでしょうか? 得意なジャンルではありませんので、アフターフォローは期待しないでください。 VBS自体をUnicodeで書いてみることで比較的簡単な解決になりませんでしょうか? ファイルの読み書きをするならまた別の工夫が要る場合もあるかも知れませんけれど、、、。 ご質問の問題については、とりあえず手元の環境では解決できました。 テスト準備 新規のフォルダ作成。名前は仮に フォルダP フォルダPに新規の(サブ)フォルダ作成。名前は ❶ フォルダ❶に新規のテキストファイル作成。(内容は適当)名前は ❶ フォルダPに新規のテキストファイル作成。名前は とりあえずそのまま。 【メモ帳】でこの↑未編集のテキストファイルを開き、 下記のスクリプトをコピペ。 [名前を付けて保存]ダイアログで [ファイル名]名前は仮に Hoge.txt [文字コード]をUnicodeに指定して 保存。 【メモ帳】を終了。 フォルダPのスクリプトを記入したテキストファイルHoge.txtの拡張子を.vbsに変更。 以上でUnicodeで書いたvbsファイルができます。 テスト実行 フォルダPHoge.vbsを実行 テスト結果 フォルダ名、ファイル名、共に"❶"の文字は拾えていて、 エラーなく、正しく表示されます。 Option Explicit Rem On Error Resume Next Dim objWshShell ' WshShell Dim objFSO ' FileSystemObject Dim objFolder ' FileSystemObject.Folder Dim oSubFolder ' FileSystemObject.Folder Dim oFile ' FileSystemObject.File Dim sFolderName Dim sSubFolderName Dim sFileName Set objWshShell = WScript.CreateObject("WScript.Shell") sFolderName = objWshShell.CurRentDirectory Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(sFolderName) For Each oSubFolder In objFolder.SubFolders sSubFolderName = oSubFolder.Name WScript.Echo "フォルダ名", sFolderName & vblf & _ "サブフォルダ名", sSubFolderName Rem MsgBox sSubFolderName For Each oFile In oSubFolder.Files sFileName = oFile.Name WScript.Echo "ファイル名", sFileName Rem MsgBox sFileName Next Next Set objWshShell = Nothing Set objFolder = Nothing Set objFSO = Nothing
その他の回答 (1)
- x-1919
- ベストアンサー率52% (91/173)
Windows 7 しか手元にないので限定されてしまうかもしれませんが、 質問文にあるコードではエラーが出ず、正しく出力されました。 実際に黒背景に白抜きの 1 や、はしご高の高田などのフォルダーを作ってみましたが問題なくフォルダー名を出力できました。 実行環境は整理できていますか?