Utf 8 将windows-1250转换为utf8时避免双重转换
可能重复:Utf 8 将windows-1250转换为utf8时避免双重转换,utf-8,iconv,Utf 8,Iconv,可能重复: 我使用以下命令从文件夹中将.srt文件从windows-1250转换为utf-8 for /f "delims=" %%a IN (' dir C:\utf_check\*.srt /b /s ') do %iconv% -s -f windows-1250 -t utf-8 < %%a > %%a.txt for/f“delims=“%%a IN('dir C:\utf\u check\*.srt/b/s')do%iconv%-s-f windows-1250-t
我使用以下命令从文件夹中将.srt文件从windows-1250转换为utf-8
for /f "delims=" %%a IN (' dir C:\utf_check\*.srt /b /s ') do %iconv% -s -f windows-1250 -t utf-8 < %%a > %%a.txt
for/f“delims=“%%a IN('dir C:\utf\u check\*.srt/b/s')do%iconv%-s-f windows-1250-t utf-8<%a>%a.txt
但是我有一个问题,如果文件已经是utf-8 iconv,请在插入奇怪字符时中断文件。
有没有办法先检测是utf-8还是ascii,然后再转换?
我尝试了flip、enca、encov和recode,但没有成功
我使用的是Windows2003服务器,我也安装了cygwin,也许这会有所帮助
例:这是utf-8Aşezaţi-vţ中的文本。
这是iconv再次转换AĹźezaĹi-vÄ后的文本
thanxwindows-1250编码中的任何合理文本都不会是有效的utf-8。因为在utf-8中表示超出ASCII范围的字符的字节对应于windows-1250中没有意义的字符序列。因此,您需要首先检查文件是否为有效的utf-8,只有在文件无效时,才进行转换 如果iconv无法进行转换,则可以使用iconv失败(错误级别为1)这一事实。因此,首先运行
iconv-f utf-8-t utf-8
,如果失败,则运行iconv-f windows-1250-t utf-8
请注意,这只适用于确定是utf-8还是传统编码,但您无法区分不同的传统编码,因为有效字符的范围对于所有windows anything编码都是相同的或基本相同的,因此您必须执行一些更高级的启发式,可能涉及拼写检查。ASCII是UTF-8的子集!(windows-1250当然不是)我已经理解了,ASCII是notepad++关于编码的说法