2011-06-05 26 views
1

我有一个脚本,将一些西里尔文本放入会话变量中,如下所示:$_SESSION['cyrillic'][$y]其中$ y是一个迭代器,所以最后数组看起来像这样:使用数字键在多维数组中不显示UTF-8

[cyrillic] => Array 
    (
     [0] => ������ 
     [1] => �������� 
     [2] => ������ 
     [3] => ������ 

然而,在这两个PHP,HTML UTF-8头和文件挣扎后保存字符集(有或没有BOM),我发现那里是没有错的字符集设置(显然)在WILL WORK中用西里尔语文本设置任何其他会话变量。

这意味着:$_SESSION['cyr']['txt'] = $cyrillic_string_here;会工作得很好,如下所示:

[cyr] => Array ( [txt] => десять )

所以,我不明白的话,就是用数字键为什么我不能插入西里尔到一个数组,但是按字母顺序排列?当我需要使用迭代循环时,我该如何解决这个问题?

编辑:这不是。我可以将相同的文本插入到另一个变量中并进行回显,或者使用不带数字键值的会话变量,它可以正常工作。

编辑:我也发现了这一点:

*将难以找到文档句话我很担心是:“$ _SESSION关联数组中的键都受到同样的限制,如常规的变量名PHP。“*

但我想我可以用这样的数值来创建一个数组:$ array [$ i]?或者这是否意味着因为关键是ASSOC $ array ['text'] [$ i]不起作用?

+0

我也看不到第一个块上的字符。您确定在编码使用UTF-8编码时,是否在文本编辑器中编写了它们? – 2011-06-05 14:32:31

+0

这对数组或数字键完全没有帮助。这个问题必须发生在别的地方,很可能是错误的数据库连接,头文件等字符集。 – Wrikken 2011-06-05 14:37:39

+0

输出意味着你的数据不是UTF-8编码。 – Gumbo 2011-06-05 14:38:17

回答

0

找到解决方案。我有一个trim(strtolower($text));环绕我的西里尔文。

用strtolower:

[这些功能]只有当翻译是ISO 8859-1普通字符和UTF-8之间的工作,这意味着他们将与西方的语言,但不是西里尔字符或亚洲工作。

感谢您的帮助。