我正在尝试修复存档的html页面中的编码错误。我的问题是sed表现得很奇怪,因为它没有捕获数据中的特殊字符。我尝试使用和不使用-r开关。
我的数据如下:
Budapesti ??p?t?©szeti Filmnapok k??l??nkiad??s
sed命令:
sed -i.bak 's|Budapesti.*|REPLACE|g' index.html
我得到的结果没有重新编码:
REPLACE�t?�szeti Filmnapok k??l??nkiad??s
我期待的结果是:
REPLACE
似乎与某种方式的编码有关。如果我先recode iso-8859-2 index.html
,那么sed工作正常,可以得到预期的输出。
以下是重新编码之前i ??p?t?Šs
部分的十六进制字节:
69 20 3F 3F 70 3F AD 74 3F A9 73
并重新编码后:
69 20 3F 3F 70 3F C2 AD 74 3F C5 A0 73
BTW,这是我没有重新编码的结果:
REPLACEt?Šs
52 45 50 4C 41 43 45 AD 74 3F A9 73
我使用的是最新的gsed(GNU sed)4.2.2。
答案 0 :(得分:1)
LANG=C.ISO-8859-2 sed -i.bak 's|Budapesti.*|REPLACE|g' index.html