我有一个名字数组,我正在从mysql表中读取.一切正常,除了我刚刚注意到,如果名称包含任何非英语字符,例如斯堪的纳维亚语,希腊语等,这会导致错误,"未定义的索引".
我没有得到的是,使用相同的功能,名称在我的应用程序的另一部分被列出正常.唯一的区别是我在发生此错误时专门将名称作为参数传递.其他时候我只是遍历整个列表并回显所有名称.
每个名称都是数组键,我收到了else返回行的错误:
if($nameParam ==""){
return $listOfNames;
}
else{
return $listOfNames[$nameParam];
}
Run Code Online (Sandbox Code Playgroud)
我有什么想法可以解决这个问题?
以某种方式检查每个名称并将某种编码/解码写入/读取应用于mysql表会更好吗?如果是这样,最好的方法是什么?谢谢..
Tha*_*Guy 10
我已经查看了PHP C代码,看看PHP是否以任何方式修改/剥离数组键字符串中的unicode字符,但在那里找不到任何转换逻辑.为了证实这一点,我在php.net邮件列表上提出了一个问题:
问: ......等等......我只是想知道 - 当数组密钥中使用unicode characteres时 - PHP会剥离它们还是以任何方式影响它们?或者PHP只是将键视为二进制字符串,故事的结尾?
答: 我相信字符串数组键被视为二进制字符串,从不修改.我找不到你的来源,但我一直在努力这个假设,从来没有遇到过问题.UTF-8键绝对可以正常工作(*); 我也不知道密钥可以有的最大长度(这意味着您不必担心多字节字符在中间被截断).
因此,我现在相信,在数组键中使用任何UTF8字符都不应影响您像往常一样使用数组的能力.
也
我确定你已经知道这一点,但我会检查db使用正确的编码来存储数据.在mysql中,我总是使用UTF-8字符集和utf8_general_ci排序规则.
| 归档时间: |
|
| 查看次数: |
1920 次 |
| 最近记录: |