VIM は 1 文字ずつ ^@ を表示し、行末に ^M^@ を表示します。

VIM は 1 文字ずつ ^@ を表示し、行末に ^M^@ を表示します。

どこかに回答があったらすみません。どのように見つけるべきかわかりません。銀行から処理する必要がある一連のレポートを受け取りましたが、そのレポートが...誤ってエンコードされているようです。

VIMの最初の2行:

     1 ^M^@
     2 ^@:^@2^@0^@:^@3^@0^@4^@0^@7^@1^@9^@^M^@

たとえば、geditの同じ2行は次のようになります。

     1 
     2 :20:3040719

何が起こったのか教えてくれる人はいますか?またはを使用してファイルを開くことはfenc=utf8重要ではありませんfenc=cp1250(これはこれらのファイルが使用する必要があるエンコーディングです)。fenc=ucs-bomエンディアンと関係があると思って試してみましたが、やはり何の変化もありませんでした。私は^@それがnullで、^MWindowsスタイルの改行(CRLF)であることを知っていますff=dosff=unix

同じ銀行に古いファイルがありましたが(いくつかの変更が適用される前)、うまくいきました。破損したファイルには次fileの内容が表示されますが、次のように表示されます。extended-ASCIIdata

$ file *sta
20220411_182719.sta: Non-ISO extended-ASCII text, with CRLF line terminators
20220412_071916.sta: data

VIMはこれらの文字を置き換えてファイルを処理できますが、PHPを使用して1日に何千ものファイルを自動化する必要があり、実際にはVIMを使用できません。理想的には、銀行サポート担当者に彼らが何を台無しにしたかを伝えることです。

ベストアンサー1

わかりました。見つけました。それはUTF-16 Little Endian

:e ++enc=utf16le

これで処理時に正しく変換できます。

おすすめ記事