PHP 和 MySQL 编码和奇怪的标志

标签 php mysql encoding

我正在从网站接收来自网站的 ISO-8859-2 数据,然后将其转换为 UTF-8(也用作 MySQL 中的编码)并进行一些修改并存储数据...

当我打印数据时,一切似乎都很好......当我将数据存储到我的表并从那里打印时,一切都很好......但是当我比较新收到的数据并与存储在 mysql 中的数据进行比较时,我总是得到尽管数据相同,但不匹配。所以我检查了 DB .. 当我在 DB 中打开数据时,我看到末尾或中间有一个符号...示例:Ä、‡ 等。

有什么想法吗?

更新:我使用 InnoDB 存储引擎来启用事务......并且确切的数据库编码是 UTF8_GENERAL_CI

最佳答案

我得到了 ISO-8859-2 输入数据 ...

首先我用以下方法替换了奇怪的符号:

$data = str_replace(chr(194), "", $data);

chr() uses ASCII code to search sign... 

下一步是将数据转换为UTF-8编码

$data = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $data);

我收到转换了字符的字符串,但同样的符号又以某种方式出现,所以我这样做了

$data = str_replace(chr(194), "", $data);

再次......之后我做了:

$data = @iconv('UTF-8', 'UTF-8//IGNORE', $data);

这给了我清理过的 UTF-8,即使仍然包含一些奇怪的字符... @ 开头是为了避免在出现故障时抛出错误...

我相信这确实是一个特殊案例 - 我处理外部数据已经很长时间了,没有遇到过这样的案例,但希望有一天有人会需要它......

感谢大家的帮助与合作……如果没有社区的支持,我无法解决这个问题!谢谢!

关于PHP 和 MySQL 编码和奇怪的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247683/

相关文章:

反序列化 jQuery 序列化表单时 PHP 反序列化错误

php - 动态且无限制地在laravel中添加字段

ruby - 如何使用 FasterCSV 导入名称类似于 "Ciarán"的行?

php - 我是否需要像 PHP 那样使用 Python 编写 Node.js?

javascript - 如何设置 Yeoman/Grunt 来运行 PHP?

mysql - 与创建分界字段联合

mysql - 在此 bash 脚本中获取 LAST_INSERT_ID

php - php和我的sql从多表搜索时出错

ios - 在 Swift4 中获取错误的 Base64 图像

json - Golang中的Encode Set数据结构