3

我正在努力让泰语字符和 PHP 一起工作。这就是我想做的:

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

但是,我没有给我 $string (ท) 的第一个字符,而是得到了一些混乱的输出。但是,显示 $string 本身可以正常工作。

文件本身当然也是 UTF-8。Header 中的 Content-Type 也设置为 UTF-8。我根据这个站点更改了 php.ini 中的必要行。

utf8_encoding() 和 utf8_decoding() 也无济于事。也许你们中的任何人有一个想法?

4

1 回答 1

4

在 PHP 中,当您使用它访问字符串时,$string[0]它不会返回第一个字符,而是返回第一个字节。

您应该改用mb_substr。例如:

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

注意:由于您正在使用mb_internal_encoding('UTF-8');,您不妨忽略最后一个参数。


发生这种情况是因为 PHP 不知道字符串所在的编码(即:编码存储在字符串对象中)。因此默认情况下会将其视为 ANSI/ASCII。如果您不想这样,那么您必须使用多字节字符串函数(mb_*)。

当您设置时,mb_internal_encoding('UTF-8');您告诉它UTF-8用于所有多字节字符串函数,但不用于其他任何东西。

于 2013-12-08T13:12:51.990 回答