PHP utf8_encode() 将空格转换为不间断空格

标签 php unicode utf-8

<分区>

非常简单:utf8_encode($string) 将常规空格替换为不间断空格 ("\u00a0")。我尝试使用 str_replace 过滤结果:

str_replace("\u00a0", " ", utf8_encode($string))

但这并没有解决问题。

编辑:唉,我是个白痴。 utf8_encode() 也不是问题。我以为我正在使用该功能,忘记了我在我的代码中禁用了它。我的数据正在通过 json_encode() 运行以获取 AJAX 请求。是json_encode()的问题吗?我担心我可能会滥用 Stack Overflow。我会尝试使用谷歌搜索。

最终编辑:问题出在数据本身,它是从 Word 文档复制到 MySQL 表中的。所有空格都被复制为不间断空格。抱歉浪费了大家的时间。

最佳答案

str_replace("\u00a0", " ", utf8_encode($dat)). But that didn't fix it.

PHP只有字节串,没有原生的Unicode字符串;因此没有\u escape 并且您实际上是在要求它转换输入中的反斜杠-字母-u 序列。

要摆脱不间断的空格字符,您必须替换掉 \xA0 (如果在传递给 utf8_encode 之前完成了您可能拥有的 ISO-8859-1 数据),或 \xC2\xA0 (如果在转码为 UTF-8 后完成)。

utf8_encode仅将 ISO-8859-1 转码为 UTF-8,它不涉及空格,因此我怀疑您的实际数据中有不间断的空格字符。

关于PHP utf8_encode() 将空格转换为不间断空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085204/

相关文章:

ms-access - 通过 VBScript 从文本中删除尾随的不可见字符

string - 如何删除不可打印的字符

c++ - 如何在 Visual C++ 中使用 UTF8Encoding

php - 在 mysql 中存储 curl session cookie

php - 将按钮值提交给 Controller 但未能发布该值

c++ - 比较 UTF-8 字符

android - 将表情符号添加到 Android 键盘

PHP - 无法连接到远程 MySQL 数据库

php - 我自己网站的内容管理系统

c++ - 从 char* 缓冲区构造字符串时是否需要考虑编码 (UTF-8)