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


Latvian characters into MySQL Database converting

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

有人能帮我解决问题吗?

假设您真正使用的是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。这里提到的所有i都存在于utf8中。

如果您还有其他问题,请为任何有问题的文本提供SELECT HEX(col)...。例如(为了清晰起见,添加了空格):

在utf8:A岛-->41C38E44 41;Aīda-->41C4AB64 61
在cp1257中:Aīda-->41EE64 61