PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 如何知道utf8的字,所顯示出來的寬窄?
作者:
Caesar08
(Caesar)
2016-05-29 19:19:39
問題(Question):
更新:
原來ptt根本沒用east asian width
他就只是用isascii來決定這個字是寬的還窄的而已...
因為在記憶體上,文字是不需要對齊的,所以ptt不需要處理這問題
但是如果要顯示出來,就會需要用到east asian width,以及font這些
更新:
https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c就是east asian width
只不過不是最新版本的
更新:
在我實作east asian width後,
™還是被認為是中文字的寬度
我原本以為是unicode版本問題,但沒想到一開始的設計
™就是ambiguous(ambiguous的意思就是,可能是narrow,但也可能是wide)
然而,█在分類上也是ambiguous,但是在ptt上的顯示卻是wide
難道ptt用wcswidth之類的?
原文:
如題,當我用terminal時(或windows的記事本)
™
^ 這邊不能打字
這個字雖然在utf8底下是3 byte,但是它顯示出來的效果卻跟英文字一樣
但是
ˇ
這個字雖然在utf8底下是2 byte,但是它顯示出來的效果卻跟中文字一樣
我要怎麼知道一個字在顯示出來時
到底是跟英文字一樣(窄),還是跟中文字(寬)一樣呢?
註:
我知道一個utf8可以是1~4 byte,我也知道如何決定他的byte數量
但我要的是它顯示出來的"寬度"
作者:
leicheong
(睡魔)
2016-05-29 19:32:00
http://stackoverflow.com/questions/4063146/
user2781185 的答案.噢, 你要display width的話有wcswidth()可用這會<wchar.h>裡.
作者:
uranusjr
(â†é€™äººæ˜¯è¶…級笨蛋)
2016-05-29 20:22:00
如果你的「純C++」是指要用標準庫, 答案是沒有不過其實 character width 有寫在 Unicode 標準裡, 只要用幾個 if 很容易自己做一個函式出來例如這是 JavaScript
https://goo.gl/dcDx5M
作者:
MOONRAKER
(㊣牛鶴鰻毛人)
2016-05-30 02:18:00
unicode病當然要用unicode藥醫 過分的潔癖是不健康的
作者:
LPH66
(-6.2598534e+18f)
2016-05-30 05:45:00
你引的那個連結是全型半型, 跟你要問的 unicode 字寬不同
繼續閱讀
[問題] 請問如何取得程式(.exe)的位置
hunandy14
[問題] vector iterators incompatible
laihungzen
[問題] 檔案處理,過濾文字
k1dave6412
[問題] 新手C語言陣列問題
qq0925921
[問題] 關於++運算子的問題
nikuman
[問題] 請問檔案結尾 0A FF 0A 有什麼意義嗎?
os653
[問題] 有寫法可以確定不會被RVO介入嗎?
dreamboat66
[問題] C++ primer 4/e中文版 p.496
ko27tye
[問題] 如何隱藏Header file裡class結構
ajizzinmybox
Re: [問題] c語言新手指標問題!
hunandy14
Links
booklink
Contact Us: admin [ a t ] ucptt.com