【问题标题】:Is this a weird foreign character set or an encoding issue?这是一个奇怪的外来字符集还是编码问题?
【发布时间】:2020-01-11 08:26:36
【问题描述】:

我正在尝试修复一个奇怪的字符错误,但我不知道发生了什么。我有一篇外国人写的文章,当我收到时,字体渲染正确出现了奇怪的问题。我已将其缩小到正在使用的字符集的问题,但我不知道如何将其转换为正确的美国版本或诸如此类。帮忙?

这是一个例子:

公共汽车网站

这明明是“企业网站”这个词组,但是当你cmd+f或者cntrl+f输入这个词组时,它并没有识别出这个词组。有没有人遇到过这个问题?我发现的唯一解决方法是重新输入短语,但这对于 1500 字的文章是不可行的。我尝试将其复制并粘贴到文本编辑器中以可能对其进行重新编码,但这没有奏效。

【问题讨论】:

  • 请将您的解决方案作为答案发布并从问题中删除。
  • 但我当然会!

标签: javascript html encoding utf-8 character


【解决方案1】:

我从这个页面复制了文本,并将其放入这个 JavaScript:

'buѕіnеѕѕ wеbѕіtе'.split('').map(c => c.charCodeAt(0).toString(16))

输出是:

["62", "75", "455", "456", "6e", "435", "455", "455", "20", "77", "435", "62", "455", "456", "74", "435"]

其中一些在 ASCII 范围内,但很多是西里尔字母表中的相似字符。

【讨论】:

  • 这可以解释为什么重新输入它会修复它,但是您知道如何在不手动重新输入所有内容的情况下解决这个问题吗?
  • 除了在代码中编写特殊用途的转换,或者在文本编辑器中对相似字符进行全局搜索和替换之外,没有像指定特定字符编码这样简单的方法.
  • 嗯,这很有帮助。感谢您为我指明正确的方向!也许我可以找到一些可以为我完成繁重工作的东西。
【解决方案2】:

使用来自其他答案的输入,我能够使用以下 javascript 代码挑出违规字符:

// get everything in the div
let article = document.getElementById('post')
let text = article.innerText

// get chars with values outside the ASCII range
let characters = text.split('').map(c => c.charCodeAt(0) > 128 ? c : null)

// filter out null values
let filtered = characters.filter(c => c)

// get the unique values
filtered = Array.from(new Set(filtered))

这让我知道了我使用 Find & Replace 来转换它们的 12 个字符。毕竟还不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2013-02-20
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多