LURACAST Restler框架 - 处理欧洲字符的问题

时间:2012-05-03 16:36:54

标签: php rest restler

我正在使用restler PHP API来托管REST服务。我在处理一些欧洲字符时遇到问题,否则它工作正常。

例如,我在MySQL数据库中有字符串“Českýrozhlas1 - Radiožurnál”。当restler API将数据转换为JSON时,它将被转换为“?esk \ u00fd rozhlas 1 - Radio \ u009eurn \ u00e1l”

此处第一个字符转换为问号。

如何使用restler PHP服务正确转换数据?

1 个答案:

答案 0 :(得分:1)

在处理Unicode时,我们需要确保一直使用utf-8

首先,您需要确保MySQL数据库使用utf-8编码。您可以运行以下sql以确保

ALTER TABLE your_table_name_here CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

接下来,你需要确保MySQL在与PHP交谈时吐出utf-8。

您可以使用以下命令

mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');

如果您使用的是PDO,则需要使用以下内容来连接数据库

$db = new PDO(
          'mysql:host=localhost;dbname=data_pdo_mysql', 'username', 'password',
          array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")
      );

在这些更改之后,restler结果应该变为

"\u010cesk\u00fd rozhlas 1 - Radio\u017eurn\u00e1l"

哪个是带有完整数据的有效JSON,其中unicode字符使用unicode转义序列进行转义。