拉脱维亚字符转换为MySQL数据库

时间:2015-04-09 14:32:23

标签: php mysql encoding utf-8

我有一些问题。我在拉脱维亚语的数据库中有一些数据(即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');

所以有人可以帮我解决我的问题吗?

1 个答案:

答案 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