【问题标题】:Can anyone tell me what this ascii character is?谁能告诉我这个ascii字符是什么?
【发布时间】:2009-09-16 05:03:33
【问题描述】:

我偶尔会出现这个字符,但我似乎在 ascii 表中找不到它。我想在数据发送到数据库之前对数据运行过滤器,但我必须先知道它是什么。也许有人可以提示我。我正在使用所见即所得的编辑器,这就是它的来源。该字符出现的非常零星,但当我执行两个 \r 或退格键时,它似乎经常出现。

这是角色

Â

好的,有人建议我将文档头部的内容类型更改为 utf8,但我仍然在数据库中获取这些字符。这是我添加内容类型后的测试

adf af  aafd a a

aa a  afa a 

adf

【问题讨论】:

  • 看起来像 ASCII 194。您可以使用 CHAR(194) 执行 SQL REPLACE 以清除这些,至少在 SQL Server 中有效。
  • ...btw,要弄清楚这一点,您可以将该文本复制并粘贴到十六进制编辑器中,并记下其十六进制值。在 Windows 中,我可以使用charmap 程序再次检查十六进制值(在本例中为 C2)是否与显示的字符匹配。
  • 没有 ASCII 194 这样的东西。ASCII 码是 7 位的。
  • 在 ISO 8859-1 (Latin-1) 和 Windows-1252 下为 194。
  • 感谢大家的提醒。那么我可以在windows中使用charmap吗?

标签: php utf-8


【解决方案1】:

此字符很可能与 UTF-8 编码问题有关。在这种情况下,绝对推荐阅读 Joel 的文章The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。

在发送到数据库之前过滤掉这些字符几乎肯定是错误的做法。

在您提到的情况下,您可能正在处理字符 U+00A0,它是不间断空格的 Unicode 字符。这个字符的位模式是:

1010 0000

经过 UTF-8 编码后,编码后的字节如下所示

110x xxxx  10xx xxxx

其中 'x' 代表 Unicode 字符值的位,因此 U+00A0 编码为:

1100 0010  1010 0000

这是 0xC2 0xA0。巧合的是,第二个字符与您编码的原始字符 (U+00A0) 的字节值相同,而第一个字符是您看到的 Â。

【讨论】:

  • 你永远不知道。我从一些 stackoverflow 答案中复制了一些代码,却发现它们带有这个字符。
  • 谢谢格雷格。我现在要去链接。
  • Greg,这些字符遍布我的数据库。如果可以的话,我需要清理它们,然后解决问题。
  • 嗨,格雷格,你还在吗?我正在查看该文档,我是否正确地说我需要的只是页面头部的 UTF 内容类型?
  • 这对我不起作用,格雷格。我仍然在数据库中获取它们。请在我的 OP 中查看上面的内容。
【解决方案2】:

它是一个“带有旋折号的拉丁文大写字母 A”,HTML 代码 Unicode U+00C2

维基页面:http://en.wikipedia.org/wiki/%C3%82

【讨论】:

  • 嗨番茄三明治,谢谢。这是一个帮助。看起来好像我可能是编码问题。
【解决方案3】:

当我遇到这个问题时,根据@Greg 的回答,对我有用的解决方法是:

0xC2=194, 0xA0=160,

在php中:

$output=str_replace(chr(194).chr(160), " ", $html);

这将Âs 替换为它们应该是的 。

【讨论】:

    【解决方案4】:

    我是 OP。我不再登录,但我回来分享解决方案。这个问题实际上是一个编码问题。我补充说:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    

    在我这样做之后,我注意到我的数据库中仍然有这些时髦的字符。然后我更改了数据库表上的编码,也没有做任何事情。那只剩下浏览器了……我检查了浏览器中的编码,发现它使用的是 ISO-8859-1。我将浏览器上的编码更改为 utf-8,现在可以正常工作了。 :)

    感谢所有做出贡献的人。

    【讨论】:

    • 那是因为浏览器忽略了&lt;meta&gt;标签。您需要发送正确的 http 标头,使用 header
    【解决方案5】:

    我认为您看到了我曾经遇到过的错误。 ISO-8859-1 实际上是用于西欧语言的 Windows-1152(我认为是 1152)的子集。问题是当 Web 服务器接受 ISO-8859-1 时,浏览器很乐意提交 Windows-1152 字符。这意味着浏览器发送的数据是无效的 ISO-8859-1。至少我的 Windows 安装就是这样。我在 IE 和 Firefox 中都看到过这种行为。

    我遇到了所见即所得编辑器的问题,用户可以从 Word 文档中粘贴数据。该文档将包含连字符和破折号。其中一个角色会很好地提交。另一个是垃圾,因为 ISO-8859-1 中不存在该字符(我永远不记得哪个是哪个)。

    我们使用的 .net 框架也没有帮助,因为它在转换为 unicode 时没有抱怨无效的 ISO 字符。

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多