我正在建立一个以立陶宛语存储信息的网站。 它基本上由所有拉丁字母和一些独特的字母组成: Ąą,Čč,Ęę,Ėė,Įį,Šš,Ųų,Ūū,Žž。
我正在尝试将数据库排序规则设置为utf8_general_ci或cp1257_lithuanian_ci。 不过我更喜欢使用utf8_general_ci。
在页面上打印立陶宛字符时,任何一个theese collations都能正常工作, 但PHP代码似乎并不了解立陶宛字符。例如 - 当我尝试将所有立陶宛字符交换为simillar拉丁字母(Ą= A,Ė= E)php时 不能将这些字母与代码中描述的立陶宛字母相匹配。当我尝试使用小写的立陶宛语文本时,立陶宛语字母变成2个拉丁字母。
我应该尝试更改以使其有效?
编辑:
代码:
<?php
echo 'ĄąČčĘęĖėĮįŠšŲųŪūŽž';
?>
返回:
Ä...ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÅÅÅÅÅÅÅÅÅÅ
我已经做过的事情:
-All files set to "UTF8 No Mark"
-Html has a propper meta tag
-Mysql database collation is "utf8_general_ci"
答案 0 :(得分:3)
确保您的文件是UTF-8而没有BOM编码。
你的php页面应该发送一个UTF-8标题:
header("Content-Type: text/html; charset=utf-8");
答案 1 :(得分:0)
你忘了一件事。您必须通知浏览器有关这样的编码:
<meta charset='utf-8'>
或者这个:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
或者这个:
<?php
header("Content-Type: text/html; charset=utf-8");
?>
如果您没有通知浏览器有关编码的信息 - 浏览器将使用其配置中的默认编码,否则它将尝试自动检测。
答案 2 :(得分:0)
您必须注意的一件事是PHP没有为字符串定义内部编码:字符串只是字节数组,因此要在PHP中表示文本,您总是需要两件事:
代码中出现的字符串文字的字节内容取决于您生成文件的方式(具体而言,它取决于文本编辑器使用的编码)。 PHP解释器不会对脚本的编码感到烦恼,只要它与ASCII兼容,因此解析器可以正确读取它并识别语法。
最终,要按原样输出文字字符串,您需要将文本文件使用的编码传递给浏览器。这是在传输级别完成的,使用HTTP标头:
Content-Type: text/html; charset=<INSERT YOUR SOURCES ENCODING>
在PHP中,必须在使用函数header()