我的一個php檔案編碼為gbk的,我想轉化為utf8的編碼格式,其中有幾個字,字型是webdings,通過iconv沒有轉化過來。我該怎麼做,用php語言才能把其轉化為utf8的編碼格式
回複內容:
《編碼》
你有個小盒子,裡面裝了 256 枚印章,每一枚都有編號。你參加了學校的「印章密碼愛好者興趣小組」,裡面有個外國來的小女孩,經常跟你玩一個遊戲,比如你問「今年暑假你去了哪裡?」她回答說「78,89,67」。因為你們都如此熟悉自己的印章,你一下子就明白了她說的是「NYC」。
「那你出生在哪裡呢?」,你問。
她遲疑了一下,想了想說,「77,195,188,110,99,104,101,110」。
你愣住了。一盒印章有 256 個,但是大家平時基本只用前 128 個。你知道 77 是 M,可 195 是什嗎?你一時想不起來,只好慚愧地拿出隨身攜帶的那盒印章,拿出 195 和 188 號按在紙上:
「ü」。
所以小女孩說的是「München」。可這是啥意思呢?à 又 ¼ 月台?你疑惑地望著小姑娘,小姑娘也疑惑地望著你。只見她也轉身拿出一個盒子開啟來——你頓時傻了眼——裡面密密麻麻地居然排了上千個小印章!而且有好多層!小姑娘熟練地翻到某一層,俏生生用指甲挑出一枚小印章來,在紙上印下一個符號:
「ü」
然後把印章遞給你。你拿過來一看,好傢夥,上面居然刻著「C3 BC」,另有一行小字「195 188」。所以……對於她來說,195 188 就代表能印出「ü」的印章了……可是印象裡你的盒子裡也有「ü」呀,於是你把盒子裡的第 252 號印章拿出來給她看,正是一個「ü」。就在你們面面相覷茫然無措快要哭出來的時候,興趣小組的輔導員大叔走過來,親切地說:「小朋友們,別難過,要繼續相信愛情」,然後從牆上的書架裡拿下一本封面上印著《ICONV》的大書,熟練地翻到「iso8859」這一章,指著「00fc
ü:252」條目裡後面的那個數字說:「你們看!iso8859 的 ü 就是 252 號!」;然後他又翻到「utf8」這一章,指著「00fc
ü:C3 BC」說:「而 utf8 的 ü 就是十六進位 C3,BC,也就是十進位的 195,188!」。
大叔合上大書,把你的印章盒子翻過來,指給你看背後印著的一行小字:「Encoded in iso8859」,而那個外國小女孩的盒子背面則印著「Encoded in utf8」。「我只能幫你到這裡啦,小夥子」,大叔看著你們似懂非懂的樣子,笑著說。
雖然你不太明白為什麼要有這樣一本書,為什麼不能每個盒子都裝一樣的東西,但是從此之後,如果碰到小女孩說出不認識的數字,你們就會一起去查閱那本《ICONV》,從此過上了兩小有猜的幸福生活。
——————外一篇——————
《字型》
作為一個印章收集愛好者,你一生積攢了很多隻盒子,每個盒子裡面有很多帶編號的小孔,每個小孔裡面插著一隻印章。有個盒子上面寫著「Arial」,拿出裡面編號為 65 的印章,印在紙上是這樣的:
很多其他盒子裡的 65 號印章,圖案看起來都很相似,比如「Brush Script」盒子裡面的 65 號:
直到有一天你遇到有個盒子上面寫著「Webdings」,裡面編號為 65 的印章,印在紙上居然是這樣的:
……於是你想起小時候跟你一起玩的那個小姑娘,用顫抖的雙手拿出 78,89,67 三枚印章,按在紙上:
————————
閱讀完以上兩篇小小說後請思考:
- 編碼和字型的關係是怎樣的?
- 「00fc ü:252」 和 「00fc ü:C3 BC」裡面的「00fc」可能會是什嗎?
- iconv 是做什麼用的?
————————
思考題答案:
- 字型描述的是字元所具備的外形,編碼則是對於某個編號應該代表哪個字元而產生的約定。字型會以某種編碼排列,但是編碼和具體的某字型之間沒有必然聯絡,就好比 78 可以是字母 N,卻也可以是一隻眼睛。
- 把全世界所有可能出現的符號搜集到一起列成一個表,給裡面的每個字元編列一個獨一無二的號碼,這個編碼計劃叫做 Unicode。而那些號碼則叫做(unicode 的)code point。00fc 就是 ü 在 Unicode 編碼計劃裡的 code point。
- 某一個特定字元在 Unicode 裡的 code point 可以通過 iconv 找到對應的 utf8 或者 iso8859 的 code point,所以一個字元在 iso8859 裡的 code point 也就可以通過 iconv 找到對應的 utf8 的 code point。換句話說,iconv 可以轉換編碼,但是具體這個編碼用什麼字型顯示,不關 iconv 的事情。
謝邀。都 是大神啊,菜鳥路過濤吳的回答很生動,編碼和字型應分清。為什麼會有這樣疑問,是轉換後顯示不正常嗎?求問啊 現在開啟ppt很多東西都自動轉成webding字型,無法調回,怎麼辦呀
謝謝你輸入的是pinyin 'da' 並選擇”大“
系統錄入的是根據當前編碼的0x34 0x35
字型檔就是圖形庫,或者向量圖形庫,根據編碼0x34 0x35 來顯示 "大"
不同字型檔同樣編碼的映像畫的可能不一樣。
——————但是這裡我自己也有個問題:
utf8和gbk都可以打出“大”,編碼和字型檔對應嗎?是怎麼對應的?還是有個中介層來映射?
(很久以前看過libiconv,freetype的代碼,但是現在實在想不起來了。)關於字元編碼:字元編碼入門