Php UTF-8不在带有数字键的多维数组中显示
我有一个脚本,它将一些西里尔文字放入会话变量中,如下所示:Php UTF-8不在带有数字键的多维数组中显示,php,session,utf-8,Php,Session,Utf 8,我有一个脚本,它将一些西里尔文字放入会话变量中,如下所示:$\u session['cyrillic'][$y],其中$y是迭代器,因此最终数组将如下所示: [cyrillic] => Array ( [0] => ������ [1] => �������� [2] => ������ [3] => ������ 然而,在PHP、HTML和files save字符集(有和没有BOM)中都使用
$\u session['cyrillic'][$y]
,其中$y是迭代器,因此最终数组将如下所示:
[cyrillic] => Array
(
[0] => ������
[1] => ��������
[2] => ������
[3] => ������
然而,在PHP、HTML和files save字符集(有和没有BOM)中都使用UTF-8标题后,我发现字符集设置没有任何问题(显然),因为使用西里尔文文本设置任何其他会话变量都可以
这意味着:$\u SESSION['cyr']['txt']=$cyrillic\u string\u此处代码>将正常工作,如下所示:
[cyr]=>数组
(
[txt]=>
)
所以,我不明白的是,为什么我不能用数字键而不是字母键将西里尔字母插入数组?当我需要使用迭代循环时,我如何解决这个问题
编辑:不是那样的。我可以将相同的文本插入另一个变量并回显它,或者是一个没有数字键值的会话变量,这样就可以正常工作
编辑:我还发现:
*我要讲的一句很难找到的文档语句是:“与PHP中的常规变量名一样,$\u会话关联数组中的键也受到同样的限制。”*
但是我想我可以用这样的数值做一个数组:$array[$I]?或者,这是否意味着由于键是ASSOC,$array['text'][$i]无法工作?找到了解决方案。我有一个修剪(strtolower($text))代码>环绕着我的西里尔语
strtolower:
[这些功能]只有在ISO 8859-1和UTF-8中的常用字符之间进行翻译时才起作用,这意味着它们可以很好地用于西文,但不能用于西里尔文或亚文
谢谢您的帮助。我也看不到第一个区块上的字符。您确定在UTF-8上编码时在文本编辑器中编写了它们吗?它与数组或数字键完全无关。问题一定发生在其他地方,很可能是数据库连接、头等的字符集错误。输出表明您的数据不是UTF-8编码的。