我有一些问题。我在拉脱维亚语的数据库中有一些数据(即Valentīna
),我需要在我的页面上显示这些数据。
其他数据以cp1257编码保存,看起来像AÎDA MACIJEVSKA
- 并显示为Aīda Macijevska
所以我试过......
1 - ucwords(mb_strtolower(iconv("windows-1257", "UTF-8//TRANSLIT", trim($row['pac_name'])), "UTF-8"));
2 - ucwords(mb_strtolower(iconv("windows-1257", "UTF-8", trim($row['pac_name'])), "UTF-8"));
3 - just show without any converting from DB `$row["pac_name"]`;
并且所有3个点都显示相同的结果 - Valent?na
P.S数据库有utf8_general_ci整理,我也为utf-8编码提供了标题 - header('Content-Type: text/html; charset=utf-8');
所以有人可以帮我解决我的问题吗?
答案 0 :(得分:0)
假设你真的使用的是cp1257而不是utf8,那么你需要
SET NAMES cp1257
(或客户端以其他方式告诉 mysqld 使用cp1257对字节进行编码)CHARACTER SET cp1257
(或者可能是表定义的默认值)。但听起来你应该选择utf8,而不是cp1257 ...
在我看来,Î
中不存在cp1257
。参考:http://en.wikipedia.org/wiki/Windows-1257。因此,您提到的代码可以通过ī
或?
免费搞砸。
如果你真的需要I-hat,请选择utf8
。请注意,排序utf8_latvian_ci
存在。这里提到的所有我都存在于utf8中。
如果您还有其他问题,请提供SELECT HEX(col)...
以查询相关文字。例如(为清晰起见添加了空格):
在utf8中:AÎDA - > 41 C38E 44 41; Aīda - > 41 C4AB 64 61
在cp1257:Aīda - > 41 EE 64 61