→ MOONRAKER: 用%s輸出 第一個漢字就用substr取最前面兩個字元11/03 15:05
有查了一下,C沒有支援substr函式,但可以用strncpy函式代替,先稍微做了測試,讀取
中文的時候好像還是會有問題
https://imgur.com/qBxH4eF
讀取英文取多個字元是正常但少字元最後好像也會有亂碼
https://imgur.com/d7FVgG3
https://imgur.com/CeYiDyi
是使用這個函式有沒注意到的地方嗎,感謝
推 stupid0319: 中文有UTF-8,UTF-16,跟BIG5,UTF8跟UTF16的碼是一樣的11/03 16:03
→ stupid0319: 但UTF8存在記憶體的方式不同,詳細要上網查看看11/03 16:05
→ stupid0319: 程式預設比較建議用unicode來編碼,可以吃萬國碼11/03 16:07
→ stupid0319: 看你程式應該是用BIG5,也就是多字元,查一下規則11/03 16:11
→ stupid0319: 把BIG5規則代入你的code中就不會有亂碼了11/03 16:11
→ stupid0319: BIG5不太能用wchar來處理,碰到單個字母就會有亂碼11/03 16:13
→ serikafan: 用wchar請用mbstowcs或是MultiByteToWideChar去轉換11/03 17:09
※ 編輯: skyHuan (114.44.67.165), 11/03/2017 18:30:06
※ 編輯: skyHuan (114.44.67.165), 11/03/2017 18:39:39
→ serikafan: 在程式碼中直接用中文會跟檔案編碼跟編譯器有無支援相11/03 18:54
→ serikafan: 關,最好避免這麼做11/03 18:56
→ serikafan: 英文出現亂碼是因為你忘了在結尾補\0 11/03 19:02
→ serikafan: 你的問題用wchar應該比較好解決11/03 19:06
參考了serikafan大的code,
加上setlocale(LC_ALL,"Chinese_Taiwan.950");
printf要用大寫的%C跟%S (寬字元)後,
問題已經解決,謝謝各位幫忙解答
※ 編輯: skyHuan (114.37.176.48), 11/03/2017 21:40:56
※ 編輯: skyHuan (114.37.176.48), 11/03/2017 21:41:37