【问题标题】:How to replace 'strange' signs?如何替换“奇怪”的标志?
【发布时间】:2015-07-12 19:03:16
【问题描述】:

当我使用 vi 打开文件时,我看到以下行:

00:00:15:Co<9c> Ty!

&lt;9c&gt; 下隐藏了什么,我怎样才能对所有出现的这个奇怪标志进行全局替换?文件采用 UTF-8 编码

【问题讨论】:

    标签: vim replace vi


    【解决方案1】:

    &lt;9c&gt; 是单个字符,其值 0x9c = 十进制 156;在 UTF-8 中,这是 U+009C String Terminator。您可以通过以下替代方法之一替换它:

    • 拉出字符 (yl) 并通过:help c_CTRL-R 将其插入到:substitute 命令中::%s/&lt;C-r&gt;"//g
    • :substitute 命令中通过其十六进制值输入字符::%s/&lt;C-v&gt;x9c//g; cp。 :help i_CTRL-V_digit
    • 通过:substitute命令中的特殊\%x9c正则表达式原子输入字符::%s/\%x9c//g; cp。 :help /\%x

    【讨论】:

    • 实际上对我有用的替换是::%s/\%uYYYY/substitute/g
    • 是的,这是另一种选择;也添加了它。
    【解决方案2】:

    您的文件包含字节 0x9c,如之前在 Ingo Karkat's answer 中所述。当文本文件包含 0x80–0x9f 范围内的字节时,通常表明该文件采用 Windows-1252 编码(或者对于非西欧语言环境,采用不同的 Windows code page)。

    要在 Vim 中以 Windows-1252 编码文件的形式查看文件,请输入 :e ++encoding=windows-1252。然后问题中的文本显示为

    00:00:15:Coœ Ty!
    

    不过,我不能告诉你这是否是正确的字符。相反,如果预期的编码是 Windows-1250,对于中欧语言,:e ++encoding=windows-1250 命令将使文本显示为

    00:00:15:Coś Ty!
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 2012-06-13
      • 2012-02-24
      • 2018-12-03
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多