如何将 latin1 字符集关联数组从 php 传递到 javascript?

Posted

技术标签:

【中文标题】如何将 latin1 字符集关联数组从 php 传递到 javascript?【英文标题】:How to pass a latin1 charset associative array from php to javascript? 【发布时间】:2014-08-07 14:18:19 【问题描述】:

问题是我在 db 中有 latin1 字符集。 php 中的默认输出是 utf-8。 即使我使用 php iconv,它也会返回 null,因为新字符串应该已经是 utf-8。

转换数据库需要停机。

我不能使用 json_encode,因为字符串是格式错误的 utf-8,包含 �。

我需要一个替代方法来临时解决问题,而无需迁移数据库。

我需要将关联数组传回 JS。我正在使用 Ajax 获取数据。

【问题讨论】:

【参考方案1】:

您可以在将数据传递给json_encode 之前转换编码(这确实需要UTF8 编码的字符串)。使用the mb_convert_encoding function 就可以了:

$utf8String = mb_convert_encoding(
    $sourceString,
    'UTF8',
    '<src encoding>' //in your case: ISO-8859-1
);

同时,制定一个如何将数据库转换为 UTF-8 的策略,因为它会为您省去很多在整个项目中无休止地处理不同编码的痛苦。

【讨论】:

【参考方案2】:

将驱动程序的编码(客户端)显式设置为 UTF-8。

示例:

PDO/PostgreSQL PDO/mysql

【讨论】:

以上是关于如何将 latin1 字符集关联数组从 php 传递到 javascript?的主要内容,如果未能解决你的问题,请参考以下文章

当字符串包含 PHP 中的重复键时,如何将字符串转换为关联数组? [复制]

php:如何从数字索引中获取关联数组键?

如何从 PHP 中的多维关联数组中删除项目

iOS Swift 如何从 UIWebView 将 JSON 字符串和数组或字典传递给 Javascript?

如何拆分字符串并构建一个关联数组php?

从 $_POST 中的 json 读取关联数组