2014-09-30 58 views
0

所以,我想從C程序的用戶的一些輸入,做fscanf(stdin, "%s", buffer) 當我輸入的字符å我得到的134的值對應的代碼頁437轉換用戶輸入到Unicode

但是,當我使用窗口功能GetACP()我得到1252作爲活動代碼頁和134不匹配å在該代碼頁。我試着將代碼頁設置爲UTF-8,但是根本沒有給我任何輸入。

有沒有辦法讓用戶輸入相應的代碼頁並將其轉換爲unicode格式?或者如果有更好的方式獲得輸入。

我一直在尋找很多,我無法找到關於此的更多信息。

+2

Windows控制檯程序使用與Windows其餘部分不同的代碼頁。 – 2014-09-30 15:58:39

回答

1

出於歷史原因,控制檯窗口使用的代碼頁稱爲OEM代碼頁。您可以使用GetOEMCP和當前選擇的代碼頁GetConsoleCP獲取默認代碼頁。

您可以通過命令chcp 65001將控制檯設置爲使用UTF-8,但Microsoft不保證它可以在所有情況下都能正常工作。

如果您不需要正常的C++ I/O到控制檯,您可以使用Console Functions, WriteConsoleW輸出一個Unicode字符串。

+0

有什麼辦法將它轉換爲unicode? – user3785768 2014-09-30 16:22:56

+0

我不需要在控制檯上顯示UTF字符,只需從控制檯以UTF-8或類似的unicode格式獲取輸入即可。當我將代碼頁設置爲65001時,輸入字符後緩衝區爲空。 – user3785768 2014-09-30 16:57:27