|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何把字符打印出來
環境英文rh73,我的程序接收到一個UNICODE的變量,我
如何通過PRINTF打印出來 |
如何把字符打印出來
是英文的嗎
直接使用printf 不就行了
UNICODE是由ASCII碼前面可以看到,Unicode 中,所有的字符都是 16 位的,包括所有的 7位 ASCII
碼都被擴充為 16 位。(注意,高位擴充的是零 \x0,上面顯示成空格)。這樣的
代碼不再屬於傳統意義上的文本文件。這些代碼可以使用我們介紹的 MView
Convert 軟件轉換成為 GB、BIG5 或其他漢字編碼。注意區分轉換選擇中 UTF-7、
UTF-8 和 Unicode。
轉自http://thunder.prohosting.com/~xiaocao/surf/lmdq/luanma16.htm
另外可以在google上使用unicode關鍵字得到更多unicode的信息 |
如何把字符打印出來
是要打印中文 |
如何把字符打印出來
我是要根據接收到的中文進行分析和存儲,但我 把接收到的內容存在字符串變量中打印出來是空的 |
如何把字符打印出來
我轉換成GB格式了還是空的,存儲GB格式的字符串變量我
用PRINTF出來還是空的,怎麼辦? |
如何把字符打印出來
試試fprintf,printf是fprintf族的一個函數,查一下相關的書。 |
如何把字符打印出來
把我知道的一些東西說說看吧。
首先,樓主說要打印中文,我不太明白你的意思,是要打印到終端上呢,還是要輸出到打印機?我想其實你的程序本身應該沒有什麼問題,重要的是你的環境變量設置是否正確,通常如果你的終端上要能夠顯示中文,需要中文字庫和正確的環境變量設置,比方說我在linux上的環境變量設置的是LANG=zh_CN.GB18030,這樣GBK的中文是能夠正確顯示的。
其次,對於版主說的UNICODE是16位,不敢苟同。最簡單的推理就是16bits肯定不夠對所有的中文進行編碼,16bits才65535個編碼,是遠遠不夠的。何況UNICODE是要對世界上所有的字符進行編碼,所以16bits肯定不對。我猜想版主所說的,應該是指Windows上面wchar類型的變量。我曾經作過UTF-8對GB2312和BIG5三者之間的編碼轉換,我所瞭解到的UTF-8編碼方式從1個字節到4個字節的都有。ASCII字符都是1個字節,而中文GB2312對應的字符在UTF-8中基本上都是3個字節。
嘿嘿,當年曾經作過一個最傻的事情就是判斷如果一個詞組為6個字節,就當作UTF-8編碼,呵呵,導致程序狂占資源,所以印象比較深刻。這裡把我知道的說出來,希望大家不要走太多的冤枉路。呵呵,版主不要生氣哈。。。 |
如何把字符打印出來
對於unicode 不是16bit 的有不同見解
可以參考
關於Unicode
http://www.qiliang.net/qt/unicode.html
Unicode是一個16位的字符集,它可以移植到所有主要的計算機平台並且覆蓋幾乎整個世界。它也是單一地區的;它不包括代碼頁或者其它讓軟件很難讀寫和測試的複雜的東西。現在還沒有一個合理的多平台的字符集可以和它競爭。由於以上原因,Trolltech公司從Qt 2.0開始選擇Unicode作為它天然的字符集。
UTF-8確實是一個可變長的字符串
可以參考
http://thunder.prohosting.com/~xiaocao/surf/lmdq/luanma16.htm
UTF-8 編碼進行了這樣的處理:它保持 US-ASCII 字符為 US-ASCII, 而其他編
碼要保證高位是 1,在編碼序列中還包含了碼長信息。UTF-8 是一個不定長度的
編碼。這樣編碼的結果是在編碼序列中,所有的 US-ASCII 碼原來也一定是 US-
ASCII 碼。(具體意義和方法詳見上述資料)
如果locale不支持中文的話
那麼在控制台上確實不能顯示中文(打印出來的是亂碼)
打印應該也不行吧
打印也要有中文字庫支持的 |
如何把字符打印出來
精闢。不過我認為這太深了,不如用簡單的說明一下就行了。 |
| |