web-dev-qa-db-ja.com

Unicodeファイル名を修正する方法は?

NTFSファイルシステムを搭載したWindows7があります。私は次のようなファイル名とディレクトリ名を持っています:

Kispál és a Borz - 02 - Tökéletes Helyettes

私はそれらを次のように変換したいと思います:

Kispál és a Borz - 02 - Tökéletes Helyettes

ファイルシステムはフリー百科事典のようなファイル名を保存できるので、確かにUnicodeをサポートしています。

私がその話を想像するように、ずっと前にそれらは完璧でした。次に、それらはUTF-8からLatin-1ファイルシステムに転送され、次にこのUTF-8サポートファイルシステムに戻されました。理論的には、すべての情報がそこにあり、これらの文字を修正するプログラムをCで書くことができますが、誰かがすでにそれを行っていると思います。

変換を実行できるユーティリティを知っていますか?

3
Notinlist

私は、変換部分を実行するC/C++ハイブリッドを作成しました(名前を変更せず、不良バイトシーケンスを良好なバイトシーケンスに変換するだけです)。この投稿の最後にあるリンクを使用してダウンロードできます。

入力ファイルは、UTF-8ストリームとしてUNICODEコード位置シーケンスにデコードされ、その後、他のコードページに変換されません。すべてのコード位置は256未満であり、元のUTF-8文字列のバイトシーケンスを表します。したがって、これらのコード位置をバイトとして出力に書き込むだけです。結果は正しいUTF-8文字列です。それはまだ私の問題のアプリケーションではありませんが、ソリューションの中核です。

プログラムはLinuxで作成およびテストされていますが、どのOSでも動作するはずです。使用例:

nil@hippy:~/playground/c++$ g++ utf8decode.cpp -o utf8decode
nil@hippy:~/playground/c++$ cat > file
Kispál és a Borz - 02 - Tökéletes Helyettes
nil@hippy:~/playground/c++$ cat file | ./utf8decode
Kispál és a Borz - 02 - Tökéletes Helyettes
Characters found: 48
nil@hippy:~/playground/c++$

以前にUTF-8文字カウンターを作成し、それを変更しました。私は1時間でプログラム全体を書いたわけではありません。ソース: http://Pastebin.com/Hy7tVt5Ahttp://Pastebin.com/NFJUP0R5

0
Notinlist

私の問題は、Windows 10ExplorerがUnicodeファイル名を正しく表示していなかったことです。名前はUnicodeでしたが、画面にゴミが表示されていました。答えは、再起動すると問題が解決したというものでした。

1
Ron Tischler

ディナール・クルバノフの答えについて詳しく説明させてください。 Total Commander v7以降でエンコードされているファイル名を修正するには、複数の名前変更ツール(Ctrl + M)を使用する必要があります。

そこにフォルダのようなボタンがあり、それをクリックして[名前の編集]を選択すると、ファイル名を含むテキストファイルが表示されます。好きなツール/エディターで修正した後、貼り付けてエディターを閉じます。

ファイル名を編集するためのボタン

0
pati

ファイル名の編集ボタンを使用して、Total Commander MultiRenameツールで修正することができます。

0
dinar qurbanov