Basicからテキストファイルの文字コードを把握したく、NKFの利用を考えました。
しかし、Shell関数経由でNKF利用は、期待する結果を返してくれません。
同様のUNOサービス(SystemShellExecute)利用では、期待する結果を返します。
当方のShell関数利用に不備があるから期待する結果が返らないのでしょうか?
Shell関数は、第四パラメタで同期を指定することができるので、
できれば此方を使いたいです。『これ以外でBasicからテキストファイルの文字コードを把握する
方法があれば、教えていただけると嬉しいです。』
以下が、検証用のソースコードです。環境は以下のとおり
- 検証Libre環境は 7.4.7.2(x64)です。
- 事前にD:\Tmp ディレクトリを作る。
Shif_JIS文字コードのテキストファイル sjis.txtを前述のDirに格納 - 事前にベクターから nkf.exe nkf32.dll Windows用 2.1.1 をDL。
このDLファイルからnkf32.exeを、すでにPathが通っている
C:\Users\~\AppData\Local\Microsoft\WindowsAppsに格納します。
■以下検証用ソース■
Option Explicit
Option Base 0
Option Compatible
Private Sub M00_Main
CompatibilityMode(True)
Dim wCmd as String
Dim wPrm as String
wCmd = "cmd"
wPrm = "/C nkf32 -g D:\tmp\sjis.txt >D:\tmp\"
Dim wPrm1 as String
wPrm1 = wPrm & "Ans1.txt"
Shell(wCmd, 2, wPrm1, True)
Dim wObj as Object
Dim wPrm2 as String
wObj = CreateUnoService("com.sun.star.system.SystemShellExecute")
wPrm2 = wPrm & "Ans2.txt"
wObj.execute(wCmd, wPrm2, 0)
End Sub