我正在寫一個終端(控制檯)應用程序,該應用程序應該包裝任意的unicode文本。確定一個unicode字符是全角還是半角C++
終端通常使用等寬(固定寬度)的字體,所以要包裝一個文本,它只不過是計算字符並觀察一個單詞是否適合一行,並相應地採取行動。
問題是Unicode表中有全角字符佔用終端中2個字符的寬度。
計算這些會看到1個unicode字符,但打印的字符是2「正常」(半寬)字符寬,打破了包裝例程,因爲它不知道佔用兩倍寬度的字符。
作爲一個例子,這是一個全角字符(U + 3004的JIS符號)
〄 12
它不佔用這裏2個字符的全部寬度雖然它的預格式化的,但它確實使用兩次終端中西部人物的寬度。
爲了解決這個問題,我必須區分全角或半角字符,但我找不到在C++中這樣做的方法。是否真的有必要知道unicode表中的所有全角字符來解決問題?
相關http://www.icu-project.org/apiref/icu4c/uchar_8h.html#a3376f0d34bb23c54671859f1978b4226和http://www.unicode.org/reports/tr11/ – 2013-02-27 14:21:29
對於哪個OS /平臺? – 2013-02-27 14:27:48
對不起,我錯過了。操作系統是Linux。 – Noice 2013-02-27 14:50:32