我正在努力让泰国角色和PHP一起工作。这就是我想做的事情:
<?php
mb_internal_encoding('UTF-8');
$string = "ทาง";
echo $string[0];
?>
但是我没有给我$ string(ท)的第一个字符,而是让一些混乱的输出。但是,显示$ string本身效果很好。
文件本身当然也是UTF-8。标题中的Content-Type也设置为UTF-8。我根据this site更改了php.ini中的必要行。
utf8_encoding()和utf8_decoding()也没有帮助。也许你们中有人有想法?
答案 0 :(得分: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
表示所有多字节字符串函数,但不能用于其他任何字符串函数。