2013-12-08 26 views
3

我很努力地讓泰文字符和PHP一起工作。這是我想要做什麼:在PHP中操作泰文字符

<?php 
    mb_internal_encoding('UTF-8'); 
    $string = "ทาง"; 
    echo $string[0]; 
?> 

而是讓我$字符串的第一個字符(ท),我只是得到了一些亂七八糟的輸出。但是,顯示$字符串本身工作正常。

文件本身當然也是UTF-8。標題中的內容類型也設置爲UTF-8。根據this site,我更改了php.ini中的必要行。

utf8_encoding()和utf8_decoding()也沒有幫助。也許你們有什麼想法?

回答

4

在PHP當你訪問一個字符串$string[0]它不返回拳頭字符,但第一個字節。

您應該改用mb_substr。例如:

mb_substr($string, 0, 1, 'UTF-8'); 

注意:由於您使用mb_internal_encoding('UTF-8');你可能也忽略了最後一個參數。


這是因爲PHP是不知道編碼的字符串是在(即:編碼是存儲在字符串對象)。所以它會默認將它視爲ANSI/ASCII。如果你不想要那個,那麼你必須使用Multibyte String Function(mb_ *)。

當您設置mb_internal_encoding('UTF-8');時,您告訴它將UTF-8用於所有多字節字符串函數,但不用於其他任何內容。

+0

這是有道理的。我不知道,非常感謝。 – user3079836