抱歉,如果它在某个地方得到了回答,我不知道如何寻找它。我收到了一系列来自银行的报告,我应该处理这些报告,但它们似乎……编码错误?
VIM 中的前两行:
1 ^M^@
2 ^@:^@2^@0^@:^@3^@0^@4^@0^@7^@1^@9^@^M^@
例如 gedit 中的相同两行:
1
2 :20:3040719
谁能告诉我发生了什么事?如果我用fenc=utf8
or打开文件并不重要fenc=cp1250
(这是这些文件应该使用的编码)。我什至尝试过,fenc=ucs-bom
因为我认为它与字节顺序有关,但它也没有改变任何东西。我知道^@
是 null 并且^M
是 Windows 风格的换行符(CRLF),但是在ff=dos
和之间进行更改ff=unix
也没关系。
我有来自同一银行的旧文件(在他们引入一些更改之前)并且它工作正常 -file
显示它extended-ASCII
,而损坏的文件显示为data
:
$ file *sta
20220411_182719.sta: Non-ISO extended-ASCII text, with CRLF line terminators
20220412_071916.sta: data
我可以替换 VIM 中的这些字符并处理文件,但我需要使用 PHP 每天自动处理数千个文件,并且无法真正使用 VIM。理想情况下,我只想告诉银行支持人员他们搞砸了什么。
答案1
好的,找到了。它是UTF-16 Little Endian
。
:e ++enc=utf16le
我现在可以在处理时正确转换它。