2015-06-05 88 views
2

從這個字符串中刪除字符「 」當我執行下面的代碼時,它會返回非標準字符,那麼我們如何刪除它或獲取原始字符串?我們如何使用php

header('Content-type: text/html; charset=utf-8'); 
$String = "�่อตั้งเมื่อ"; 
echo $String; 

輸出:�?่อตั้งเมื่อ

需要實際結果:ก่อตั้งเมื่อ

+3

您是如何獲得/獲得字符串「à¸?à¹à¸à¸?àà?à¹?àà?à¸?à¸?à¹à¸'??? – Marcx

+1

提示:開頭附近的問號是錯誤的,它打破了utf8編碼。 – Phil

+0

您可以展示您的實際結果的圖像嗎?因爲至少在我的系統中沒有支持這些字形的字體,所以你在「輸出」中寫的內容與你在「需要實際結果」中寫的內容沒有什麼不同 - 兩行代碼點都是正方形。 – hijarian

回答

0

你提到的人物encdoing爲UTF-8,其中作爲字符串是不編碼爲UTF-8。這就是「?」的原因標記出現在輸出中而不是預期的標記中。

0

首先,並非由編碼問題相混淆,你真的想閱讀下面的文章:http://kunststube.net/encoding/

其次,我只是做了以下內容:

$ vim ~/sandbox/php/encoding.php 
(inserted your code verbatim) 
$ cd ~/sandbox/php/ 
$ php -S localhost:1200 

我打開後Firefox的頁面http://localhost:1200,我得到了$String的內容。

我的意思是,我得到了字符的下面一行:

�่อตั้งเมื่อ 

這意味着你的瀏覽器,無論它是,不知道如何使你進入它的字符。字符串本身正確編碼爲UTF-8。您必須將瀏覽器設置爲以UTF-8格式顯示文本,或者安裝支持這些符號的字體。

另外,如果你想輸出,說一些文本使用UTF-8梵文符號,你只需要滿足PHP下列要求:

  1. 你的源代碼文件必須保存在UTF-8 。
  2. 您必須發送utf-8字符集子標題,您已經這樣做了。
  3. 你必須把你想要輸出的字符串放到瀏覽器的原始碼到源代碼中,不需要以任何方式編碼,PHP不關心。
2

你的字符串,à¸?่อตั้งเมื่อ是無效的utf-8。這就是爲什麼顯示 - 瀏覽器不知道如何解釋它。

正如其他人所指出的,第三個位置上的問號可能是問題所在。

錯誤字符串的前三個字節是e0 b8 3f3f是ascii碼?)。我不知道任何泰語,但THAI CHARACTER KO KAI的字節順序看起來很相似,應該是e0 b8 81

+1

這也可以解釋爲什麼它顯示爲一個問號。 0x81在latin1和windows-1252中未定義。也許OP試圖複製和粘貼編碼的字符串。順便說一句,找到這個角色很好。 – Phil