在默認情況下,LabVIEW的文本文件只支持ASCI的編碼存取。對中文而言則取決於系統默認,如果是簡體中文則爲GB2312編碼,繁體中文則爲Big5編碼。
但是某些情況下需要使用到Unicode編碼的文件,如果此時直接使用LabVIEW的文本讀取方式去讀取,則會導致亂碼,或者讀取出來的只能肉眼判斷,而無法用於文本截取或正則讀取。
LabVIEW中沒有提供各種常用文字編碼之間相互轉換的函數,此時可以藉助外部的dll解決該問題。本例程中借用了kernel32.dll:WideCharToMultiByte來實現Unicode文本的讀取。
WideCharToMultiByte
函數功能:該函數映射一個unicode字符串到一個多字節字符串。 (—Unicode轉ANSI(GB2312))
int WideCharToMultiByte(
_In_ UINT CodePage,
_In_ DWORD dwFlags,
_In_ LPCWSTR lpWideCharStr,
_In_ int cchWideChar,
_Out_opt_ LPSTR lpMultiByteStr,
_In_ int cbMultiByte,
_In_opt_ LPCSTR lpDefaultChar,
_Out_opt_ LPBOOL lpUsedDefaultChar
);
在LabVIEW中,可如下構建程序:
在此,編輯了以下測試文本:
運行,可看到直觀對比結果:
由上圖可見,利用LabVIEW自帶的讀取文本控件讀出來的都亂碼了,見上圖左邊txtIn.經過本程序處理後,可恢復得到我們想要的結果,見上圖右邊Result string.
本程序源碼地址:
1、GitHub:https://github.com/JaySur/Read-unicode-text-in-LabVIEW
2、CSDN花積分下載:點擊直達下載頁面