2017-08-07 73 views
1

根據Microsoft如何使用UTF-8字符串在C(視覺工作室)工作

對於大多數一致的結果,應用程序應該使用Unicode,例如 爲UTF-8或UTF-16,而不是一個特定的代碼頁

我知道Window默認以wchar_t的形式使用utf-16,但是如何將這些wchar_t轉換爲沒有代碼頁的多字節(utf-8)? 比方說,我有存放的是UTF-8文件中的數據,我知道的來處理這些文件的唯一方法是fopen(fn, "r,ccs=utf-8")打開和讀取文成wchar_t的指針,它是UTF-16,但我想,只支持UTF-8使用。所以,我必須把它與wcstombsWideCharToMultiByte它取決於代碼頁轉換(不工作,因爲代碼頁的所有的時間)。 有什麼解決方法嗎?像直接讀取utf-8文件到utf-8 char*變量中?

+0

那麼你可以閱讀它們*不*打開文件... – Medinoc

+0

你可能不應該多字節字符的字符串的工作時指定的編碼。爲什麼不簡單地使用寬字符串? –

+0

@Medinoc那豈不是讓我無能,我讀什麼?例如'fgetc()'會返回什麼? – AtheS21

回答

0

您可以使用WideCharToMultibyte此轉換,在CP_UTF8傳遞的代碼頁參數。

+0

有人說OP不想發送多字節字符到Arduino。我不知道它爲什麼會消失(我胖手指嗎?),但是它顯示Windows API對多字節字符串的定義相當寬泛(ha!)。具體做法是:_The新字符串不一定從多字節字符set._在任何情況下,UTF-8是其中一個選項。 –