【问题标题】:How to know which characterset is in text field in MySql database if I know only that text如果我只知道那个文本,如何知道 MySql 数据库的文本字段中的字符集
【发布时间】:2015-07-23 05:03:23
【问题描述】:

当他们将 php ver 从 5.3 更改为 (5.4., 5.5, 5.6) 时,问题就开始了

我有这样的表格文本:

$rus3="Ð’Ñ‹ не хватает путевок. ДоплачиваетÑÑ. Ðажмите OK и выберите нужный пакет ...";

我需要在utf8下转换可读表中的大量文本

然后我使用:

$rust3=iconv("UTF-8","windows-1252//IGNORE",$rus3);

这是在俄语西里尔文上,如下所示:

锈3: Вы не хватает путевок。 Доплачивает��。 �ажмите OK и выберите нужный пакет ...

但并不是所有的字符都是transform,有些字符用iconv函数的这个参数转换不好。我还有更多 4 种语言,在数据库字段中具有特殊字符取决于语言,我必须将其转换为可见和易读的。

如果只有该文本( simbols ),我如何知道哪个字符集是文本,以及如何在 utf8 中转换它的最佳方法。当我从 mysql 数据库字符集中的 sql 命令获取时,它显示已经在 utf8 中。

【问题讨论】:

标签: php mysql utf-8


【解决方案1】:

你可以试试

$str = "bla bla bla";
echo mb_detect_encoding($str);

会给你字符集

如何检查你可以使用的mysql db的字符集

mysql_client_encoding($conn);

所以根据你的问题你可以试试

echo mb_convert_encoding($rus3, "UTF8", "auto"); 取而代之的是iconv。如果这有助于检查有关 mb_convert_encoding 的更多信息

【讨论】:

  • 谢谢你,但是嗯,我真的不明白这一点。当我执行函数 mb_detect_encoding($rus3) 结果是 UTF-8。转换后函数 $rust3=iconv("UTF-8","windows-1252//IGNORE",$rus3);和 mb_detect_encoding($rust3) ,结果又是 "UTF-8" 。函数 mysql_client_encoding($conn) 给出结果 "utf8" 。不同的字符如何具有相同的字符代码?
  • 我觉得转换功能无法正常工作您是否尝试将您的字符串回显为 echo $rust3;并将其与 $rus3 进行比较。你能看出它们之间有什么区别吗?
  • 感谢您的光临。似乎以某种方式可以解决。我使用 $rust3=mb_convert_encoding($rus3,"windows-1252","auto"); $rus3="ruski3-original ___________: Ð'Ñ‹ не Ñ...ваÑ,аеÑ, пуÑ,евок. Ð"оплачиваÐμÑ,ÑÑ. Ðа жмите OK и выберите нужный пакет ...";并回声 $rust3; "Вы не хватает путевок. Доплачивается. Нажмите OK и выберите нужный пакет ..." and others: mb_detect_encoding(rus3) original: UTF-8 mb_detect_encoding(rust3) after conversion: UTF-8 bazaencoding(mysql_client_encoding)对于其他语言(克罗地亚语、西班牙语、德语)
  • 我只是不明白,如果 evrything 在 utf-8 中,为什么在使用 $rust3=mb_convert_encoding($rus3,"windows-1252" 时显示良好(可见且易读), "自动");
  • 您可以编辑您的问题并更新最新的问题以便阅读吗?
猜你喜欢
  • 2018-03-06
  • 2013-11-05
  • 1970-01-01
  • 2019-10-14
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
相关资源
最近更新 更多