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

标签 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 - header('Content-Type: text/html; charset=utf-8');

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

最佳答案

假设您确实使用 cp1257 而不是 utf8,那么您需要

  • SET NAMES cp1257(或者客户端以其他方式告诉mysqld字节是使用cp1257编码的)
  • 每列上的
  • 字符集cp1257(或者可能是表定义中的默认值)。

但听起来你应该使用 utf8,而不是 cp1257...

据我所知,Îcp1257 中不存在。引用:http://en.wikipedia.org/wiki/Windows-1257 。因此,您提到的代码可以通过使用 ī? 随意搞砸。

如果您确实需要 I-hat,请使用 utf8。请注意,排序规则 utf8_latvian_ci 存在。这里提到的所有 i 都存在于 utf8 中。

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

在 utf8 中:AÎDA --> 41 C38E 44 41;艾达 --> 41 C4AB 64 61
在 cp1257 中:Aīda --> 41 EE 64 61

关于php - 拉脱维亚语字符转换为 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541410/

相关文章:

php - 使用 "@"来抑制警告/通知对吗?

php - Sed 正则表达式通过网络浏览器工作不同

php - 嵌套事务在 Laravel 中是如何工作的?

java - 服务器无法读取全部内容

ios - 将 NSString(文件路径)包装在 NSURL 中会破坏 Unicode 吗?

python 2.7编码解码

php - Mysql 作为 PHP DSO

2行之间的PHP friend 关系?

php - PHP 中的基本 SQL Select 语句格式化

php - 如何将 php ext 目录保存在变量中?