utf-8 batch 檔命令列參數的錯誤 結論:要使用命令列參數的 batch 檔不要做成 utf-8 的 或是 Win10記事本(Notepad)預設編碼UTF-8修改為ANSI http://blog.udn.com/amisay168/128020244 用 Visual Studio 產生出來的 .h、.cpp、.c 等程式碼的文字檔,預設都是 ansi 的。如果在程式碼裡放個日文,預設存檔會變成 UTF8 BOM,以下程式是可以正常執行的 #include <iostream> #include <windows.h> using namespace std; void PrintfUnicode(const wchar_t* szFormat, ...) //在 console 印出 Unicode { const int MAX_PRINT_NUM = 1024; wchar_t szPrint[MAX_PRINT_NUM] = L""; va_list pArgs; va_start(pArgs, szFormat); vswprintf_s(szPrint, szFormat, pArgs); va_end(pArgs); WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), szPrint, (DWORD)wcslen(szPrint), NULL, NULL); } int main() { wchar_t szPrint[512] = L"ハリー・ポッター"; PrintfUnicode(L"%s\n", szPrint); system("pause"); return 0; } 但是下面針對命令列參數的研究是失敗的。 utf-8 batch 檔本身的字碼是沒有問題的,但不知道為什麼,傳進 exe 檔就會錯誤。 e4 = -28 b8 = -72 ad = -83 ...