1

我的问题如下:

我存储了一个数组,其中包含“e”、“f”等键。在某些时候,我必须获取键的值。这很好用。但是,如果我想将“í”、“é”等存储为键,则不会产生正确的结果(结果为 �)。我的页面必须是 UTF-8 格式。查找问题,我发现 utf8_encode 应该可以解决我的问题。它没有:虽然它产生了一个更易读的字符,但它仍然与我想要的完全不同。如果重要,phpinfo 给出:

Directive   Local Value Master Value
iconv.input_encoding    ISO-8859-1  ISO-8859-1
iconv.internal_encoding ISO-8859-1  ISO-8859-1
iconv.output_encoding   ISO-8859-1  ISO-8859-1

什么可以帮助解决问题?

编辑:我认为数组键会丢失一些数据。这是真的吗?如果是,如何预防?

Edit2:到目前为止我尝试过的解决方案:获取数组键值 - 失败;创建一个具有相同键但值为 utf-8 字符的数组:失败;utf8_encode 失败;[尝试两者] iconv_set_encoding: failed; ini_set 失败;mb_internal_encoding 失败。全部返回 Ã 或 �。

4

3 回答 3

1

我已经整理了一些解决方案,最后它起作用了。

我所做的如下:首先,我将所有解决方案与添加此行放在一起:

ini_set('default_charset', 'UTF-8');
iconv_set_encoding("input_encoding", "UTF-8");
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
mb_internal_encoding("UTF-8");

这没有用。

我查看了所有链接, utf8_encode - utf8_decode 方法不起作用。然后我看了一下函数,我找到了 mbstring,所以我用它的mbstring等效项替换了每个字符串函数。

这工作得很好。然后,我发现这就mb_internal_encoding("UTF-8");足够了。所以现在它可以工作了。感谢所有的建议!

于 2012-02-12T09:46:21.543 回答
0

尝试在必须处理 UTF-8 数据的所有脚本的顶部添加这一行:

mb_internal_encoding("UTF-8");

甚至更好的是,编辑 php.ini 文件中的内部编码。

于 2012-02-11T16:20:13.550 回答
0

尝试设置default_charset指令:

ini_set('default_charset', 'UTF-8');

这将设置在标头中发送到浏览器的字符编码Content-Type

于 2012-02-11T21:30:15.427 回答