您好我正在打印此信息:
preg_match_all($pattern2, $row['introtext'], $arr2, PREG_PATTERN_ORDER);
print_r($arr2[text][0]);
但我明白了:
Este curso se enfoca en proporcionar las habilidades y conocimientos necesarios para instalar,operar y localizar fallas en una redempresarialpeque adesucursal,incluyendo configurar un conmutador,un enrutador y conectar a una WAN e implementar la seguridad de la red 。 El Participante debe poder completarlaconfiguraci ninformaci ndeunapeque aredde oficina sucursalconupervisi n。
正如你所看到的,我对西班牙语字母有一个奇怪的角色。
我试过
html_entity_decode
和
utf8_decode()
但那些不起作用。
是否有人对此问题有任何建议?
由于
答案 0 :(得分:2)
问题通常是双重的,与PHP无关。为了使国际字符正常工作,您需要
<meta>
标记,表明该网页采用UTF-8编码。第一个取决于您的文本编辑器。如果您告诉我们您使用的是什么,我们可以帮助您了解如何将文件放入UTF-8中。否则,你可以随时谷歌。
第二个很容易修复。只需在文档的<meta>
中添加正确的<head>
标记即可。例如,在HTML5中,它是:
<meta charset="utf-8">
现在,如果您因某些原因无法使用这些解决方案,则可以尝试在要打印的文本上调用htmlentities
。这可行。
答案 1 :(得分:1)
html_entity_decode
不起作用,因为它将字符串中的html实体(&amp; entity ;)转换为UTF-8(默认情况下)或其他字符集中的等效实体。但问题是浏览器无法识别此字符集并输出问号。
为了改善您的问题,如果您告诉您数据库中数据的字符编码是什么(它似乎来自于代码判断),将会有所帮助。
答案 2 :(得分:0)
对原始问题的建议改进:
如果您的文本输出只来自一个文件或数据库,那么已经建议的解决方案就可以了。如果您正在访问不处理字符编码的源,您将被迫使用例如iconv("LATIN1", "UTF-8//TRANSLIT", $var)
在代码中使用此类字符串。当你遇到print_r()或var_dump()等问题时,那就是这个问题。这在你的问题中并没有真正表现出来,但它仍然是一个挑战,我必须经常忍受,但我没有解决方案。