2010-04-22 15 views
2

我有MySQL數據庫表「utf8_general_ci」和在字段中的值的排序規則是:如何使用php從utf-8編碼的數據庫字段獲得編碼爲'ō'的字符的字形?

X ī bányáwén(沒有空格)。

當這樣(由StackOverflow的的編輯例如)轉化它看起來像這樣:

X ī巴恩雅雯

其中第二字符看起來像一個下殼體i相在頂部的一欄。

在PHP中,什麼函數轉換爲ī實體進入ī角色?

我使用html_entity_decode($海峽,ENT_COMPAT, 'UTF-8')試過了,但是我得到像下面這樣的字符:

雅標有«N文或查•納克文

我m很確定有一些我不懂解碼,這就是爲什麼我使用了錯誤的功能。任何人都可以點亮如何獲得由實體&#299代表的單個字符字形以及255以上的類似高數字字符嗎?

非常感謝, AE

回答

1

UTF-8是一種multibyte encoding。因此,如果您通過諸如Latin-1的單字節編碼來查看它,則會看到與您所看到的結果非常相似的內容。將文檔編碼設置爲UTF-8以查看實際字符。

至於你的第一個問題,它實際上是解碼字符引用和打印字符的瀏覽器,而不是PHP。

+0

嗨伊格納西奧。謝謝你這麼快回復。輸出被加載到PDF中。直到這一點,重音字符已經直接添加到數據庫中,並且已經出現,但上面的實體已添加爲中文。如果我使用mb_convert_encoding($ str,「ISO-8859-1」,「UTF-8」),則輸出和輸入相同。我不確定這是否是在進入PDF之前轉換的原因或者PDF如何表示字符。如果你有這個實體 - 你會如何將它轉換成字符/字形? 非常感謝= D – 2010-04-22 04:18:34

+0

@AE聽起來像數據庫編碼可能已被切換(希望只是在本地)到一個不同的編碼(可能是latin_1?),你失去了正確的字符。 – SeanJA 2010-04-22 04:32:53

+0

不幸的是我沒有使用PDF文件中的字符集的經驗,但是操作的輸入和輸出可能相同的唯一方法是如果所有字符都低於128,或者某些事情發生嚴重可怕的錯誤,那麼字符集聲明就會出錯。 – 2010-04-22 04:33:02

0

我建議你通讀本頁面:Unicode for the working PHP programmer。它不會很長,它應該讓你超越駝峯,並將其轉化爲可信的Unicode和UTF-8。

一旦你確定了這些東西,看看mbstringintl PHP擴展,這些擴展非常方便。並且知道PHP中的哪些字符串函數在多字節字符串中使用並不安全。當我將網站轉換爲包含調皮字符串函數列表的UTF-8時,這裏是the notes I made

+0

嗨。感謝您的回覆 - 我試圖轉換的字符表示爲&#xxx;其中x是一個數字,所以mbstring正在接受一個非mb字符串。我的大部分谷歌搜索都給了我相反的結果:擁有一個utf8'字符'並獲取它的代碼或將'it'轉換爲latin1或從latin1轉換爲utf8。鑑於角色的「代碼」,我們如何獲得字形?該網站已經在utf8中,因此字形會顯示在網頁中,因爲瀏覽器會使用正確的字符集轉換它,但對於通過fpdf生成的PDF,您無法發送UTF標頭,因此請參閱'code'字符串 – 2010-04-25 03:23:45

相關問題