【发布时间】:2015-03-01 18:06:31
【问题描述】:
我在我的页面中回显了一些带重音的单词,有时会这样打印:
acatl��n de ju��rez
在再次刷新页面几次后,它会像这样打印它们:
acatlán de juárez
这个过程来回重复。这不应该在我的应用程序中发生,因为我正在用这个词比较很多东西。
我的标题上已经有 utf-8
<meta charset="UTF-8">
使用的数据库排序规则:utf8_unicode_ci
导致此错误的变量分配如下:
$theString = "acatlan de juarez";
$a = array(
'animal' => array('acatlán de juárez','hów','áre'),
'color' => array('yóu','good','thanks')
);
$b = array(
'animal' => array('acatlan de juarez','how','are'),
'color' => array('you','good','thanks')
);
$theString = str_replace($b['animal'], $a['animal'], $theString);
// $theString now is $theString = "Acatlán de Juárez"
所以$theString 变量,在回显或执行查询时,有时会打印“acatl��n de ju��rez”,有时会打印“acatlán de juárez”。
编辑
我开始收到很多关于数据库查询的答案,它实际上与数据库无关,口音是从数据库中正确输出的。问题在于上面代码中解释的变量 $theString,它没有像应有的那样打印,带有重音符号。
编辑 2
我不知道现在发生了什么,我真的很困惑,在这个例子中:
$a = array(
'animal' => array('acatlán de juárez','hów','áre'),
'color' => array('yóu','good','thanks')
);
echo $a['animal'][0];
我的代码完美地输出了“acatlán de juárez”这个词。
但是我有我的数组 $cities(和我的数组 $a 完全一样),但是有州和城市。像这样:
$cities = array(
'state1' => array('acatlán de juárez','city1','city2'),
'state2' => array('city1','city2','city3')
);
echo $cities['state1'][0];
现在“acatlán de juárez”变成了“acatl��n de ju��rez”....为什么?!?
编辑 3
问题解决了,又是一个函数对字符集格式的问题,谢谢大家。
【问题讨论】:
-
您使用的是什么数据库,如果有的话?这是 PHP 还是 HTML 输出?我们能看到产生这个的代码吗?您的文件使用什么编码?
-
@halfer 我将重音词分配给变量,例如 $words = "Acatlán de Juárez";然后我将此变量发送到我的 HTML 文档并执行
echo $words;。然后我在上面解释的描述中得到结果,谢谢编辑:顺便说一句,我正在使用 MySQL -
@halfer 另外,在将其发送到我的 HTML 文档之前,我会查询当我得到“acatl��n de ju��rez”时它在我的数据库中找不到结果,但是有时它会在“acatlán de juárez”时出现……这对我来说现在是一个大问题。谢谢
-
您在数据库中使用什么排序规则?它在 phpMyAdmin 或 unicode MySQL 控制台中是否总是正确的?您使用什么操作系统? (历史上 Windows 没有一个好的控制台,所以如果你在这个操作系统上,请使用 phpMyAdmin 或 MySQL Workbench)。
-
再次重复我的问题(这些问题需要编辑):1. 我们可以看到产生此问题的代码吗?2. 您的文件使用什么编码? (这是您的 IDE 或编辑器中的设置,例如 NetBeans)。