我知道有很多关于这方面的问题,并且相信我已经尝试过对其进行正面或反面,但我似乎仍然很难将这些点联系起来。
所以我得到一个 xml 数据馈送 UTF_8 并将其存储在 MySQL 表中(默认字符集 utf8 排序 utf8_general_ci)。我有一个我希望能够正确搜索的 varchar(255)。在大多数情况下,它按预期工作,但我的数据中包含国际字符,例如,
- 埃尔科拉桑
- 埃尔科拉松
字符串 1 在浏览器中正确显示,但字符串 2 不正确。字符串 1 看起来像“El Corazón”,字符串 2 看起来像“El Coraz�n”。但是,如果我尝试选择“El Corazón”或“El Corazon”,我只会得到字符串 2。
我想要做的是: 1. 处理和清理数据馈送以保留所有合法字符并丢弃任何损坏的字符、换行符、回车馈送、制表符等。
我的 php 脚本中有 preg_replace,但它删除了我认为是合法字符的 ó。或多或少所有国际字符都被删除了,我不希望发生这种情况,我只想要干净的数据。
我希望能够使用“El Corazón”或“El Corazon”搜索表并检索等于“El Corazón”或“El Corazon”的行。
显然,我希望浏览器的所有输出都能正确显示。
我一直在思考如何执行以下操作,
如何准确擦洗数据以免丢失国际字符?
我是否尝试将 ó 转换为 ó 以便搜索功能正常工作并在 php 中转换以正确显示?
我应该创建两列,一列用于搜索,一列用于显示?
另一件事,我想在下游做一些更简单的字符串格式化,比如用 '&' 替换 'and' 和其他切换完整单词的缩写。
正如我所说,我已经搜索并尝试了 iconv、mb_convert_encoding 等,但没有得到想要的结果。
任何连接点的帮助将不胜感激。