我的旧服务器可以完美地使用特殊字符,但当我在亚马逊实例上移动整个源代码时,由于特殊字符,整个网站看起来很奇怪。
以下是亚马逊上新建实例的配置
PHP Version : PHP Version 5.3.29-Ubuntu/trusty/Sergey/r10 (amazon instance)
PHP Version 5.3.3-7+squeeze19 (old server)
Mysql Version : 5.5.46 (amazon instance)
5.1.73 (old server)
Data base collation : "utf8_general_ci"
Tables Collation : "utf8_general_ci"
Fields Collation : "utf8_general_ci"
Set Content Type in php style as well as html style under <head> tag
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
header ('Content-type: text/html; charset=utf-8');
但仍然无法解决特殊字符的问题仍然像一样显示内容
从数据库中提取并在PHP页面中显示它不会以正确的格式显示
"Tablet Caf� in Bibliotheek Ommen"
当我尝试在PHP页面中放入静态字符串时,它会显示正确的格式。
"Tablet Café in Bibliotheek Ommen"
为了制作一个href
链接,我创建了一个自定义函数,将特殊字符替换为"_",这样URL就不会中断。
$special_character = array(" ","<",">","#","%",",","{","}","|","\","^","~","[","]","`",";","/","?",":","@","=","&","$",",","(",")",",","'",".","ë","À","Á","Â","Ã","Ä","Å","Æ","Ç","Ð","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Œ","Ò","Ó","Ô","Õ","Ö","Ø","ß","Š","Ù","Ú","Û","Ü","Ý","Ÿ","à","á","â","ã","ä","å","æ","ç","¢","è","é","ê","ë","ì","í","î","ï","ñ","œ","ò","ó","ô","õ","ö","ø","ð","š","ù","ú","û","ü","ý","ÿ","€","ƒ","£","¥","…","ª","º","¹","²","³","¼","½","¾","¿","ˆ","‹","›","¦","«","»","×","©","™","®","±","÷","µ","¶","¤","°","‰","§","·","¬","•","¡","†","‡","!");
然后使用str_replace
,我的脚本将用"_"替换所有特殊字符(在上面的数组中)
str_replace($special_character,"_",strip_tags($fetch_art[$i]['title']))
所以现在我的URL是"www.xyz.com/news/Tablet_Caf�_in_Bibliotheek_Ommen"。(在我的旧服务器上运行良好)
但当我使用utf8_encode时,它工作得很好。我不想与utf8_encode一起使用,所以请建议另一种显示特殊字符的方式。
亚马逊服务器是否需要其他配置?
黑色钻石(�)是浏览器表示不知道如何显示特定字符的方式。它来自于具有latin1字符,但告诉浏览器显示utf8字符。
因此检查:
- 客户端中的字节为utf8
- 您正在连接utf8
set_charset('utf8')
或SET NAMES utf8
- 表/列显示
CHARACTER SET utf8
- html的报头中的元标签表示CCD_ 6
(不要使用utf8_encode或任何其他转换函数。)