找回密码
 快速注册
搜索
查看: 5|回复: 2

编写 shell 脚本将所有 .htm 文件从 Windows-1252 转换为 UTF-8 编码

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2024-9-26 15:43 |阅读模式
Windows-1252 在 1985 至 1990 年间最为流行,如果你有这么老的文件,你可能需要转换
  1. for each in  ls *.htm
  2. do
  3.   iconv -f windows-1252 -t utf-8 $each > $each.tmp
  4.   mv $each.tmp $each
  5. done
复制代码
iconv是一个常用的Linux命令,用于进行字符集转换。

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2024-9-26 15:46
Windows-1252 的“可用字符”是 UTF-8 的一个子集,因此可以无损转换为 UTF-8
打开 Windows-1252 时看到乱码的原因是字节 127 到 255 之间的字符,而 UTF-8 对这些字符的编码不同。

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2024-9-26 15:52
hbghlyj 发表于 2024-9-26 07:46
打开 Windows-1252 时看到乱码

有没有办法辨别字符串的编码是 utf-8 还是 cp1252?
如果编码是 CP1252 ,如果有几个字节在 0x80-0xFF 范围内,则很可能会产生无效的 UTF-8。
因为 UTF-8 对于构成有效字节序列非常挑剔,而每个随机字符串都是有效的 cp1252,但很少有随机字符串是有效的 UTF-8。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:45

Powered by Discuz!

× 快速回复 返回顶部 返回列表