最近我将主机从一个提供商切换到另一个提供商,我在显示西里尔字符时遇到问题。从数据库中读取的字符显示正确,但在php文件中硬编码的字符不是(它们显示为问号)。
包含php源代码的文件以utf-8格式保存。帮助任何人?
答案 0 :(得分:5)
尝试在head部分放置一个指示编码的元标记:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
答案 1 :(得分:3)
我的PHP模块完全出现同样的问题所有文字都像&#34; ?????????????????&#34;
我的代码是用Notepad ++编写的。我找到了问题的解决方案。问题不在标题字符集或元标记中,因为浏览器实际上知道它是UTF-8字符集。我尝试了浏览器中的所有编码,结果是一样的,所以我知道问题出在其他地方,而不是浏览器字符编码。
我刚用Notepad ++打开PHP模块并选择了所有代码。之后在编码菜单中,我选择了&#34;转换为UTF-8。&#34;上传到服务器后,一切都像魅力一样。
答案 2 :(得分:2)
问题似乎很奇怪
这些问号的形式是什么?是问题的黑色钻石还是简单的问号?
首先仔细检查您的文件是否真的utf-8
编码
尝试将此标题添加到您的代码中(首先是输出)
header('Content-Type: text/html; charset=utf-8');
但是我怀疑它会有所帮助,因为你的数据库文本看起来很好
您的代码中是否有SET NAMES
个查询? charset
它的设置是什么?
答案 3 :(得分:2)
在连接数据库后输入:
mysql_query("SET NAMES UTF8");
for mysqli
mysqli_query($connecDB,"SET NAMES UTF8");
并在页面标题中:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
答案 4 :(得分:1)
它与php文件的编码有关。这些文件是使用Windows记事本创建的,并使用utf-8编码保存。
当我使用Notepad2打开文件时,文件的编码是“utf-8 with signature”。当我将编码更改为“utf-8”时,文本显示正确。
答案 5 :(得分:0)
问题的原因通常是程序员编辑器对脚本文件进行意外重新编码。在php文件中对依赖编码的字符串进行硬编码并不是一个好习惯。
尝试切换浏览器的编码以查找用于硬编码文本的编码,它可能有助于您解决问题。另外,请确保为每个页面发送正确的http标头:
header('Content-Type: text/html; charset=utf-8');
Optionaly您可以在HTML中插入元标记:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
答案 6 :(得分:0)
对我来说,与众不同的那一行如下:
$mysqli->set_charset("utf8")
直接从PHP documentation page开始。
在将字符集设置为utf8之后,服务器正在返回拉丁语。
答案 7 :(得分:-1)
我一直在与这个完全相同的问题进行斗争,因为我正在尝试将一些法语/德语国际化添加到小部件上的一些控件上。
存储在我的数据库中的带有重音的字符打印为UTF-8。但是,在PHP文件中硬编码到数组中的字符显示为带有问号的黑色菱形或小方框。
我已经尝试过编码/解码我的php文件中的硬编码字符串,但无法正确显示字符。
由于我有一组有限的字符并且严格使用HTML,我只是在我的intl类中添加了一些功能来替换html实体的字符。
我有这些属性。
static $accentEntities = array('á' => 'á',
'É' => 'É',
'é' => 'é',
'í' => 'í',
'û' => 'û',
'ü' => 'ü');
static $accents = array();
static $entities = array();
我在构造函数中设置了一些替换数组......
foreach (self::$accentEntities as $char => $entity) {
self::$accents[] = $char;
self::$entities[] = $entity;
}
然后当我在课堂上需要我的一个硬编码字符串时,我就这样返回...
return str_replace(self::$accents,self::$entities,$str);
这是一个完全贫民窟的解决方案......但就目前而言,它有效。我非常想听到正确的方法来显示硬编码到PHP文件中的重音符号/特殊字符。