gpt4 book ai didi

linux - 编码 : unrtf SYMBOL. 字符映射需要更改

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:30 26 4
gpt4 key购买 nike

我正在尝试将一些文件从 RTF 转换为文本。原始文件是使用某些 Windows 应用程序(可能是 Word)创建的,但转换是在 Linux 服务器上进行的。我希望使用的工具是 unrtf,因为它预装在我的 Linux 发行版 (SLES !!.x) 中...或者至少我不需要安装它。

unrtf 上没有太多 doco。它运行良好,并且有一个包含一些有限信息的手册页。我的问题是,出来的编码是 ISO-8859-1,我需要 ISO-8859-15 才能获得欧元符号 (€)。我得到的是一个非符号(Ø)。以十六进制模式查看文档,我发现符号 € 所在的位置有一个值 xAC00。

在网络上搜索我发现 € 的 unicode 值为 x20AC, Ø 的 unicode 值为 x00AC。建议对 ISO-8859-15 编码进行更多搜索,正确值将是 x00A4。我发现的很多信息都是矛盾且令人困惑的(更不用说毕竟偏离了主题,即 unrtf)。

我尝试过的命令包括:​​

unrtf --text $RTF > $XRTF 
unrtf --text $RTF | iconv -c -f UTF-8 -t ISO-8859-15 > $XRTF

其中$RTF和$XRTF分别是输入和输出文件。我用

检查了 rtf 文件的假定编码
file -bi $RTF

这返回了 ISO-8859-1 的答案。所以我尝试了以下方法:

unrtf --text $RTF | iconv -c -f ISO-8859-1 -t ISO-8859-15  > $XRTF

在最后一次尝试中,我尝试创建自己的 SYMBOL.charmap 文件,并将 not 符号的值更改为“U<20AC>”,这是该文件的语法。然后我尝试了命令:

unrtf --text -P $HOME/usr/local/share/unrtf $RTF > $XRTF

所有这些尝试都没有取得任何成果......除了第二个尝试,它只是凭借 -c 选项完全删除了 not 符号(我认为)。

有人对我如何实现所需的转化有任何想法吗?

最佳答案

我还没有完整的解决方案,但我确实有一个有效的解决方法。首先要注意的是,编码 ISO-8859-1 和 ISO-8859-15 几乎相同(参见 this link )。有8处不同。其次,字符的显示方式取决于读取文件的软件,而不是取决于转换软件(在本例中是unrtf)。

因此,任务被简化为只有一个符号(用 € 代替 Ø),因为相关文件中未使用其他符号。这归结为转换后将每个文件中的“xAC”更改为“xA4”。这可以通过一个简单的 sed 命令来完成:

sed 's/\xAC/\xA4/g' temp1.txt > temp2.txt

就是这样。正如我所说:这是一种解决方法。

更改 SYMBOL.charmap 文件应该有效,但我不是 unrtf 方面的专家,所以也许我只是做得不正确。

关于linux - 编码 : unrtf SYMBOL. 字符映射需要更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com