所以,我想從C程序的用戶的一些輸入,做fscanf(stdin, "%s", buffer)
當我輸入的字符å
我得到的134的值對應的代碼頁437轉換用戶輸入到Unicode
但是,當我使用窗口功能GetACP()
我得到1252作爲活動代碼頁和134不匹配å
在該代碼頁。我試着將代碼頁設置爲UTF-8,但是根本沒有給我任何輸入。
有沒有辦法讓用戶輸入相應的代碼頁並將其轉換爲unicode格式?或者如果有更好的方式獲得輸入。
我一直在尋找很多,我無法找到關於此的更多信息。
所以,我想從C程序的用戶的一些輸入,做fscanf(stdin, "%s", buffer)
當我輸入的字符å
我得到的134的值對應的代碼頁437轉換用戶輸入到Unicode
但是,當我使用窗口功能GetACP()
我得到1252作爲活動代碼頁和134不匹配å
在該代碼頁。我試着將代碼頁設置爲UTF-8,但是根本沒有給我任何輸入。
有沒有辦法讓用戶輸入相應的代碼頁並將其轉換爲unicode格式?或者如果有更好的方式獲得輸入。
我一直在尋找很多,我無法找到關於此的更多信息。
出於歷史原因,控制檯窗口使用的代碼頁稱爲OEM代碼頁。您可以使用GetOEMCP
和當前選擇的代碼頁GetConsoleCP
獲取默認代碼頁。
您可以通過命令chcp 65001
將控制檯設置爲使用UTF-8,但Microsoft不保證它可以在所有情況下都能正常工作。
如果您不需要正常的C++ I/O到控制檯,您可以使用Console Functions, WriteConsoleW輸出一個Unicode字符串。
有什麼辦法將它轉換爲unicode? – user3785768 2014-09-30 16:22:56
我不需要在控制檯上顯示UTF字符,只需從控制檯以UTF-8或類似的unicode格式獲取輸入即可。當我將代碼頁設置爲65001時,輸入字符後緩衝區爲空。 – user3785768 2014-09-30 16:57:27
Windows控制檯程序使用與Windows其餘部分不同的代碼頁。 – 2014-09-30 15:58:39