我發現我可以在 C 中執行此操作非常有用:
char *text;
text = "5 us";
但是,當我嘗試這樣做時
char *text;
text = "5 μs";
由于 Eclipse 中的 UTF-8 源代碼編碼(使用 CubeIDE),我得到了一個無關字符。所以字串在位元組形式中看起來像這樣:
0x35 0x20 0xC2 0xB5 0x73 0x00
我需要洗掉 0xC2 并且我不想撰寫一個函式來洗掉這個字符。我知道我可以配置 Eclipse 來處理我的 US-ASCII 源代碼。但是,由于給定的分配,我無法再保存我的檔案
text = "5 μs";
除非我洗掉源代碼中的 μ,否則 Eclipse 不會保存我的檔案。
是否有類似以下的內容?
text = {'5', ' ', 181, 's', '0');
我只是不想以行人的方式創建全域字串。我想保留直接分配的優雅。
對不起,如果我沒有使用正確的 C 術語,但我認為你明白了要點。
uj5u.com熱心網友回復:
μASCII 字符集中不存在。
有許多單位元組編碼擴展 ASCII 并μ映射到0xB5,例如 ISO-8859-1、ISO-8859-3、ISO-8859-8、Windows-1252 等。
目前尚不清楚您想要哪一個,但很可能是 ISO-8859-1、aka latin1 或 Windows-1252。如果您不確定,請查看 Wikipedia 頁面中的編碼。
如果問題只是沒有正確列印字串,最好的解決方案是將輸出設備設定為 UTF-8。
如果不可能,你可以告訴編譯器你想要的執行字符集,也就是字串文字被翻譯成的字符集。
GCC 將執行字符集默認為 UTF-8,但可以使用-fexec-charset=標志更改(使用上面給出的編碼之一作為引數)。然而,這確實會產生全域影響,并且會在需要不同編碼(例如 UTF-8)的設備上弄亂輸出。
另請注意,源檔案的編碼不相關,如果您使用通用字符名稱,結果也不會改變。字串文字中的字符總是被翻譯成執行字符集。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/431330.html
