老鐵們,大家好,相信還有很多朋友對于unicode如何轉(zhuǎn)換和unicode字符集下載的相關(guān)問題不太懂,沒關(guān)系,今天就由我來為大家分享分享unicode如何轉(zhuǎn)換以及unicode字符集下載的問題,文章篇幅可能偏長,希望可以幫助到大家,下面一起來看看吧!
怎么將文本文件保存成unicode編碼
按照Windows的標(biāo)準(zhǔn)處理一個(gè)純文本文件有令人難以想象的復(fù)雜度,尤其是打開了自動(dòng)換行的情況下:
識(shí)別編碼并轉(zhuǎn)化為Unicode
按換行符將文本拆分成行,每行當(dāng)作一個(gè)段落處理
按照Unicode語義分析文本,將文本按照不同語言分拆成從左到右和從右到左的段。這一步是比較復(fù)雜的,某些語言在字符串當(dāng)中是abcdefg的順序,但顯示的時(shí)候必須從右到左顯示為gfedcba,但是如果再中間換了行,比如在d的后面換行,又要變成dcba\ngfe……而且,按照規(guī)范,從左到右的文本中可以嵌入從右到左的文本,從右到左的文本又能嵌入從左到右的文本,這個(gè)嵌入還是可以嵌套的,比如最外層是從左到右,里面有一段文字是從右到左,這個(gè)從右到左的文字里面又嵌入了從左到右的詞……
將每個(gè)從左到右或者從右到左的段進(jìn)一步進(jìn)行語義分析,找出:字符邊界(部分連續(xù)的多個(gè)Unicode字符是不可拆分的,比如字符與上面的注音符號(hào),選擇文本的時(shí)候只能選到字符邊界,不能選進(jìn)字符里);可以換行的斷點(diǎn);可以分詞的斷點(diǎn)(在編輯器中雙擊一個(gè)字符會(huì)選中詞,對英文就是按空格,對中文一般就是選中單字);定寬的空格;不定寬的空格等等。這個(gè)過程對不同的語言有完全不同的處理方式,需要按照字符選擇相應(yīng)語言的處理方法。
嘗試將文本轉(zhuǎn)換為符號(hào)(Glyphs)。Unicode字符到符號(hào)的映射并不是一一對應(yīng)的,對于某些語言來說,字符的上下文會(huì)影響字符的顯示,讓字符顯示為完全不同的樣子;符號(hào)的排布并不是簡單的從左到右按順序,某些字符需要在之前字符的基礎(chǔ)上調(diào)整位置(比如上下標(biāo),注音符號(hào),還有泰語里面那個(gè)會(huì)飛出去的字符)從右到左的文本也會(huì)有影響,在處理時(shí)會(huì)將符號(hào)逆序,統(tǒng)一處理成從左往右。這一步對于自動(dòng)換行的程序來說要更復(fù)雜一些,不過事實(shí)上所有的文本編輯器都自動(dòng)換行,區(qū)別只是打開自動(dòng)換行的時(shí)候換行按照當(dāng)前視口的寬度,而關(guān)閉的時(shí)候按照一個(gè)固定的最大寬度(你可以嘗試在記事本里面輸入非常多的字符,你會(huì)發(fā)現(xiàn)最終還是換行了的)。對于自動(dòng)換行的程序來說,不能一次性轉(zhuǎn)換成符號(hào)然后判斷寬度,因?yàn)椴煌妮斎雰?nèi)容可能導(dǎo)致不同的符號(hào)輸出,而且混排從右到左和從左到右的情況下,換行會(huì)導(dǎo)致符號(hào)順序發(fā)生嚴(yán)重的變化,因此唯一可靠的方法是按照前一步找出的所有可以換行的斷點(diǎn)分別嘗試,直到得到的符號(hào)總寬度超過行寬為止。在前一個(gè)斷點(diǎn)將文本拆開換行。如果第一個(gè)可以換行的斷點(diǎn)就超出寬度了,還需要再嘗試從詞或者字的邊界換行。
處理對齊。文本顯示有左對齊、右對齊、中間對齊、兩端對齊四種主流的方式,如果最外層文本從右到左顯示一般基礎(chǔ)是右對齊,否則是左對齊,內(nèi)部嵌入的文本不影響對齊方式。前三種相對處理起來容易,兩端對齊就要用到前面計(jì)算出的定寬空格和不定寬空格的問題了:在某些語言中,某些空格必須是固定的寬度,不能變得更寬,而某些空格允許在兩端對齊的時(shí)候增加寬度,在兩端對齊的時(shí)候,必須只加寬那些可以變寬的空格,而不加寬那些不能變寬的空格。
渲染文字。按照符號(hào)和字體,將字體里的圖畫出來,變成圖像。字體可能按不同字號(hào)有不同的繪制方法,還有抗鋸齒、ClearType等處理,不再細(xì)說。
計(jì)算行高。相對簡單,一般按照字體、字號(hào)折算一下就行了。
即便如此,我們還是有必要指出:對于現(xiàn)代的文本編輯器,即使是Windows10的記事本,也能瞬間打開一個(gè)幾兆的文本文件,這主要還是算法優(yōu)化的效果,以前舊版本總是會(huì)嘗試一次把所有的文本都渲染出來,自然就比較慢。而且以前的GDI接口也比較慢。
unicode編碼怎么轉(zhuǎn)換成中文顯示
unicode編碼不需要轉(zhuǎn)換成漢字,因?yàn)閡nicode就是和字符關(guān)聯(lián)的終極編碼。
windows中只有unicode碼可以和字符直接關(guān)聯(lián),也就是使用國際標(biāo)準(zhǔn)的unicode字符集。
中文windowsXp默認(rèn)的內(nèi)碼是gbk(裝過gb18030補(bǔ)丁的話也就變成gb18030),日文系統(tǒng)就是JIS,不同語言版本的windows都有不同的默認(rèn)內(nèi)碼,這是每個(gè)國家的標(biāo)準(zhǔn)化管理局規(guī)定的。
然后就是頁碼表的概念,所謂頁碼表就是把一個(gè)用系統(tǒng)默認(rèn)編碼(比如gbk,gb2312)表示的字符映射到對應(yīng)unicode編碼,而每個(gè)unicode編碼對應(yīng)著唯一確定的字符。這樣就完成了地域性編碼到國際標(biāo)準(zhǔn)碼再到字符的對應(yīng)關(guān)系。
在控制面板->區(qū)域和語言選擇->高級(jí),里面可以看到window提供的所有頁碼表。
絕非轉(zhuǎn)載,無參考內(nèi)容,均為個(gè)人理解參悟內(nèi)容。
unicode轉(zhuǎn)換快捷指令
是一款實(shí)用的指令工具,軟件可以配合應(yīng)用快速完成各種任務(wù),幫助用戶一鍵輕松獲取打開自己想要應(yīng)用,功能強(qiáng)大,使用簡單方便,覺得不錯(cuò)的朋友可以前來ux6下載使用。
如何將GB2312和Unicode的漢字編碼互相轉(zhuǎn)換
中文字符在記事本中保存時(shí),另存為unicode格式就是萬國碼字符集格式;另存為ANSI格式便是GB2312字符集格式。
如何正確轉(zhuǎn)換QSTring類型字符串和UNICODE
將QString轉(zhuǎn)為char字符串
printf("%s\n",(constchar*)lineEdit2->text().local8Bit());
另外如果還是有無法識(shí)別的亂碼出現(xiàn),可以在代碼中加入
QTextCodec*codec=QTextCodec::codecForName("UTF8");
最后有一個(gè)關(guān)于漢字unicode碼的提取與轉(zhuǎn)換的問題,以下是我的實(shí)現(xiàn)方法
提取QStringunicode碼:
unsignedinta=lineEdit2->text().at(0).unicode();
printf("%d,%d\n",(wchar_t)((constchar*)lineEdit2->text()),a);
printf("%d\n",convent(a));
將unicode設(shè)為漢字:
QStringch;
unsignedinttt;
tt=0x963f;
ch=ch.setUnicodeCodes((constunsignedshortint*)&tt,1);
pushButton2->setText(ch);
關(guān)于unicode如何轉(zhuǎn)換,unicode字符集下載的介紹到此結(jié)束,希望對大家有所幫助。