[問題] 有關中英文字元的顯示?

看板C_and_CPP作者 (千里之外)時間14年前 (2011/09/03 21:52), 編輯推噓9(9023)
留言32則, 10人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev-c 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ char str[] = "abcdef一個字一個字出現"; for(int i=0; i<strlen(str); i++){ printf(" %c",str[i]); for(int i=0; i<10000000; i++){ } } system("pause"); return 0; } 如圖,希望每個字元一個字一個字,經過時間差後出現,但中文字變亂碼? 雖知道中文佔2 bytes 英文1byte,但有什麼辦法可以正常顯示嗎? 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.168.1.5

09/03 22:00, , 1F
遇到中文就偷印兩個 bytes
09/03 22:00, 1F

09/03 22:20, , 2F
基本上,一個中文字是兩個字元,一個英文字母只有一個字元
09/03 22:20, 2F

09/03 22:21, , 3F
你玩過這個之後,可以考慮用 wchar_t(unicode)試試看。
09/03 22:21, 3F

09/03 22:22, , 4F
wchar_t
09/03 22:22, 4F

09/03 22:50, , 5F
wchar_t 不一定是 Unicode. 可以了解 ___STDC_ISO_10646__
09/03 22:50, 5F

09/03 22:51, , 6F
或看 en.wikipedia.org/wiki/Wide_character#C.2FC.2B.2B
09/03 22:51, 6F

09/03 22:52, , 7F
囧 __STDC_ISO_10646__ 上面多打一個底線...
09/03 22:52, 7F

09/03 22:56, , 8F
難怪業界比較愛JAVA
09/03 22:56, 8F

09/03 22:56, , 9F
我反而很不懂"Wide character"到底是什麼東西...XDD
09/03 22:56, 9F

09/03 22:56, , 10F
Java在處理中文超單純的啊...XD
09/03 22:56, 10F

09/03 23:01, , 11F
unicode也不會固定2bytes, 真的要用方便的語言
09/03 23:01, 11F

09/03 23:16, , 12F
java遇到BMP以外的字元就一點也不簡單了
09/03 23:16, 12F

09/03 23:18, , 13F
很多 C++ Frameworks 的字串 class 也都很完整了啊 :Q
09/03 23:18, 13F

09/03 23:56, , 14F
Java 是被 Unicode 標準改版陰了,所以請不要怪 lol
09/03 23:56, 14F

09/03 23:56, , 15F
要是 Java 現在重新設計,我覺得他們他開始就會用 32 位元
09/03 23:56, 15F

09/03 23:57, , 16F
(樓上上) ^他們
09/03 23:57, 16F

09/04 00:04, , 18F
Supplementary/
09/04 00:04, 18F

09/04 00:38, , 19F
可是後來的c#還是一樣搞16bit char XD
09/04 00:38, 19F

09/04 01:02, , 20F

09/04 03:45, , 21F
Unicode 只規定字的編號,實際編碼方式是 UTF-x
09/04 03:45, 21F

09/04 03:46, , 22F
像 UTF-8 就是1,2,3 bytes 都有可能,UTF-16 固定 2B
09/04 03:46, 22F

09/04 03:52, , 23F
Windows 內部就用 UTF-16 當然 C# 跟著用,何況為了那些
09/04 03:52, 23F

09/04 03:52, , 24F
有夠少用的字,一次就用到32位元,積少成多也太浪費頻寬
09/04 03:52, 24F

09/04 04:01, , 25F
@ducksteven 在比較高階的語言裡面,就是直接存字不管編碼
09/04 04:01, 25F

09/04 04:02, , 26F
代表「字元」型態可以是 Unicode 的字元編號...
09/04 04:02, 26F

09/04 04:08, , 27F
有__STDC_ISO_10646__代表同一個字母wchar_t的值等於UID
09/04 04:08, 27F

09/04 04:11, , 28F
從頭到尾都跟UTF-XX編碼沒有關係xD wchar_t只是一個數字~
09/04 04:11, 28F

09/04 04:12, , 29F
@ducksteven 啊我看懂你要反駁誰了,真不好意思 orz
09/04 04:12, 29F

09/04 04:12, , 30F
(推文都不能訂正一些打錯的地方真討厭 orz)
09/04 04:12, 30F

09/04 04:15, , 31F
@purpose 我覺得傳網路寫檔時再明確指定UTF-8/16就好了...
09/04 04:15, 31F

09/04 11:56, , 32F
XD
09/04 11:56, 32F
文章代碼(AID): #1EOZ4ICW (C_and_CPP)