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