Windows console(cmd.exe) 中文輸入/輸出, utf-8 encoding input/output
由於想玩日文遊戲,系統locale為日文 (code page 932),可能這樣中文才有問題,未確認
Windows console (cmd.exe) 下要輸出輸入非ansi文字需要先做設定
先講寫程式時要如何輸出
要先改變stdout的輸出模式,否則直接使用wcout會只能輸出ansi
_setmode(_fileno(stdout), _O_WTEXT);
接下來的wcout都沒問題了 (只需要設定一次模式)
這個問題是我在開發 暫停程式 時遇到的
https://craftwarblog.blogspot.com/2017/12/suspend-process-replacing-pssuspendexe.html
用console輸出的程式都會有一個cmd在 (~6.xMB),總記憶體用量會比預期大
但啟動速度比較快 (因為OS會快取 cmd.exe?)
輸入給程式時的編碼要用chcp改變
改成utf-8的方法
chcp 65001
到win10 1803都還有下面的問題
在使用cmd script執行的時候,如果cmd檔不是ansi必須在第一行用chcp改變編碼
否則cmd.exe會讀取script檔錯誤 (這個我除錯很久才發現)
而且utf-8 BOM會出錯,不能有BOM
如果是直接在cmd下打指令似乎沒這個限制
Windows console (cmd.exe) 下要輸出輸入非ansi文字需要先做設定
先講寫程式時要如何輸出
要先改變stdout的輸出模式,否則直接使用wcout會只能輸出ansi
_setmode(_fileno(stdout), _O_WTEXT);
接下來的wcout都沒問題了 (只需要設定一次模式)
這個問題是我在開發 暫停程式 時遇到的
https://craftwarblog.blogspot.com/2017/12/suspend-process-replacing-pssuspendexe.html
用console輸出的程式都會有一個cmd在 (~6.xMB),總記憶體用量會比預期大
但啟動速度比較快 (因為OS會快取 cmd.exe?)
輸入給程式時的編碼要用chcp改變
改成utf-8的方法
chcp 65001
到win10 1803都還有下面的問題
在使用cmd script執行的時候,如果cmd檔不是ansi必須在第一行用chcp改變編碼
否則cmd.exe會讀取script檔錯誤 (這個我除錯很久才發現)
而且utf-8 BOM會出錯,不能有BOM
如果是直接在cmd下打指令似乎沒這個限制
留言
張貼留言