2013-12-08 24 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