sup*_*rio 10 character-encoding unicode
我有一个 .srt 文件,当我在 ubuntu 的 gEdit 中打开它时显示为乱码。所以我想将它转换为utf8以便能够阅读它。
当我试图弄清楚它给出的编码时:
file -i x.srt
x.srt: text/plain; charset=unknown-8bit
Run Code Online (Sandbox Code Playgroud)
在另一次尝试中,我发现:
find . -type f -print | xargs file
./x.srt: Non-ISO extended-ASCII text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)
我也试过 enca:
enca x.srt
enca: Cannot determine (or understand) your language preferences.
Please use `-L language', or `-L none' if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca --list languages' to get a list of supported languages.
Run Code Online (Sandbox Code Playgroud)
和
enca -L Persian x.srt
enca: Cannot determine (or understand) your language preferences.
Please use `-L language', or `-L none' if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca --list languages' to get a list of supported languages.
Run Code Online (Sandbox Code Playgroud)
所以我想知道如何知道编码并最终将其转换为可用格式。
没有可靠的方法可以将未知编码转换为已知编码。
在您的情况下,如果您知道原始文本是波斯语/波斯语,也许您可以识别许多可能的编码,并迭代这些编码,直到看到您期望的输出。
基于快速谷歌搜索,没有用于传统伊朗系统编码的标准、稳定的转换器,唯一剩下的流行替代方案是Windows 代码页 1256。我在此处包含MacArabic主要是为了说明目的(尽管它甚至可能是波斯语的可行替代方案?)
for encoding in cp1256 macarabic; do
if iconv -f "$encoding" -t utf-8 inputfile >outputfile."$encoding"; then
echo "$encoding: possible"
else
echo "$encoding: skipped"
rm outputfile."$encoding"
fi
done
Run Code Online (Sandbox Code Playgroud)
(我的版本iconv
实际上并不支持 MacArabic,但也许你会更幸运;或者你可以尝试不同的转换工具。)
检查生成的输出文件;看看其中一个是否有意义。
如果您知道输出应该是什么样子,您还可以在文件中查找各个字节的映射。如果第一个字节是 0x94 并且您知道它应该显示为 ? 您已经基本确定编码是伊朗系统。也许再查几个字节来验证这个结论。这种编码的维基百科页面有一个包含所有字符的表格。显然,这很费力、很慢,而且容易出错,尤其是在有很多候选编码可供选择的情况下。
对于某些编码,您可以找到一个列表,例如https://tripleee.github.io/8bit/——对于其他编码,您可能只需要查看相应的 Wikipedia 编码表。
也许可以通过列出每个的前 20 行来直观地检查 iconv 的所有 ~1000 种可能性...合并到 all.txt 结果中。
#!/usr/bin/env bash
line=$(printf "=%.0s" {1..50})
for FMT in $(iconv -l); do
echo "$line\nFormat $FMT:\n$line"
iconv -f $FMT -t UTF8 < inputFile.srt | head -n20
done > all.txt
#gedit all.txt
Run Code Online (Sandbox Code Playgroud)
...并找出哪种格式是正确的(如果您能识别波斯语)。
归档时间: |
|
查看次数: |
30499 次 |
最近记录: |