... <看更多>
strlen中文 在 Re: [閒聊] tmi-2 efun 與simul_efun 簡單說明- MUD | PTT遊戲區 的推薦與評價
引述《typers (Typer)》之銘言: : : int strlen sizeof(string); : : 從上面可以 ... strwidth 的行為將會與strlen 不同: strlen("中文字") = 9 (UTF-8 的一個中文字 ... ... <看更多>
strlen中文 在 strlen()与mb_strlen()的作用分别是什么? · GitHub 的推薦與評價
encoding参数为字符编码。如果省略,则使用内部字符编码。 具体情况: <?php //测试时文件的编码方式要是UTF8 $str='中文a字1符 ... ... <看更多>
strlen中文 在 [問題] 輸出中文字元陣列中單一字元的問題- 看板C_and_CPP 的推薦與評價
遇到的問題:
(1) string中含2bytes的中文字符及1byte的空格字元要如何計算strlen
(2) 2bytes的中文字符string中要如何輸出單一字元(一般string中的string[0])
問題詳細描述:
我想要用既有的詞庫建一個詞庫,修改成我想要的格式
既有詞庫原本的格式為:
一 般 直 些 時 定 月 點
丁 二烯 烷 香
七 彩 嘴八舌 里香 零八落 情六慾
丈 夫 量 母娘 人
希望輸出為(50是預設詞頻):
一般 50 一直 50 一些 50 一時 50 一定 50 一月 50 一點 50
丁二烯 50 丁烷 50 丁香 50
七彩 50 七嘴八舌 50 七里香 50 七零八落 50 七情六慾 50
丈夫 50 丈量 50 丈母娘 50 丈人 50
以下是我的程式碼:
https://drive.google.com/open?id=1QGOG5uFO22OAcs9pgV83eVB41FpltqI-
如果輸入的檔案是英文可以正確執行
但如果輸入的檔案是中文就會變成亂碼
上網查了一下是因為在中文編碼中一個字元佔2bytes
用%c輸出一次只能輸出1byte
有看到資料說好像可以將char型別改為wchar_t
strlen的部分用wcslen替換
我用上面程式碼中的第22行(被註解掉的那行)做了一些測試
好像還是有一些問題
最後一筆測資”你好嗎”的wcslen似乎就有錯誤
輸入檔案中有夾帶1byte的空格字元似乎也不能完全用wcslen算字元數
另外試了一下若輸入為中文時想只輸出一個中文字元(例如第一個字元)
printf(“%c”, data_buf[0])
試過用%c或%ls好像都會出現亂碼或是錯誤
問了幾位平常有在coding的同學
好像都沒有處理過中文的問題
還請版上各位前輩幫忙了,感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.67.165
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1509691764.A.C47.html
※ 編輯: skyHuan (114.44.67.165), 11/03/2017 14:55:05
※ 編輯: skyHuan (114.44.67.165), 11/03/2017 15:04:00
中文的時候好像還是會有問題
讀取英文取多個字元是正常但少字元最後好像也會有亂碼
是使用這個函式有沒注意到的地方嗎,感謝
※ 編輯: skyHuan (114.44.67.165), 11/03/2017 18:39:39
參考了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
... <看更多>