プロが教える店舗&オフィスのセキュリティ対策術

ストレージ内の全てのファイルの文字コードを統一する方法を教えて下さい!

A 回答 (6件)

No2です



既存のShift JISファイルを、全て、utf-8や、UTF16などに変えるというのは、あまりお勧めはしません

理由は、Windowsの日本のロケールのベースとなっている文字エンコーディングは、Shift JISなので、PowerShellや、cmdなどもShift JISベースになってます

例えば、typeコマンドで、utf-8のファイルを表示すると、半角の英数字記号等は表示できますが、日本語部分は文字化けします
また、grepなどのテキスト検索もutf-8ファイルに含まれる日本語は、文字コードが異なるためヒットしません(エンコードを変更して検索するオプションがあるかも知れません)

試してませんが、utf-8にすると、Windows サーチなどでも、検索にヒットしないといった影響を受けるかも知れません

そのような理由から、テキストファイルでは日本語で書いたとしてもShift JISで保存し、プログラムのソースファイルでは、コメントや、表示文字列、また、他のOSや、ファイルのエンコーディングに影響されずに検索でヒットするように、日本語をコメントでも使わないというのが鉄則でした
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございました

お礼日時:2024/05/16 23:05

方法はありますが、その行為自体が無意味なのでやめましょう。



例えば、Shift_JISのCSVファイルはExcelで正常に開けますが、UTF-8のCSVファイルは文字化けします。

例えば、HTML等では、自分がどの文字コードで書いてあるかを書いてあったりします。
https://www.w3.org/International/questions/qa-ht …
文字コードを変えた場合は、この部分も正しく編集する必要があります。

例えばUTF-16は「テキスト」と認めてもらえないことがあります。


そのような個々の事情を個別に対応していく必要があります。
ただ変えればいいってもんじゃないです。
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございました

お礼日時:2024/05/16 23:05

No.1です。



> Shift JISは時代遅れなので使いたくないのです、、、、


マルチプラットフォームでの運用をしているのでShift-JISを使う文章があると問題・・・といった実害を考慮したものではなく、単に古い気カウだからですか。。。(^^;
まあ同期はどうあれまずは日本語入力をすることがあるアプリケーションを全てUNICODEをデフォルトとするものに更新し、可能ならOSもUNICODEを使うものに統一することです。
その上で、日本語入力をすることがあるアプリケーションが、そのアプリケーションまたはそのアプリケーションの古いバージョンでShift-JISで出力したファイルを正しく扱えないというのであれば、個々に文字コード変換を行うしかないでしょう。
特に文書ファイルがOffice系のようなバイナリファイルの場合はそのファイル構造がわかったいないとその中から文字列を見つけてコード変換することは出来ませんからバッチ処置で行うのは結構大変です。
例えば指定されたフォルダーにあるファイルを順に開いて以下のような一連の操作を行うスクリプトを作成するとか。
  (1) ファイルをWordで開く
  (2) Wordで文字コードをUTF-16に変更する
  (3) 上書き保存する
あとは具体的にどんなアプリケーションで作成した(日本語文字を含む)ファイルがあるかでしょう。
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございました

お礼日時:2024/05/16 23:05

Unix/Linuxの世界では昔から漢字コードが混乱しており、ユーザは結構漢字コードに振り回されてきました。

私自身今もEUCコードの世界から抜けることができません。他の回答者ご指摘のとおり自動的に判別して指定の漢字コードに変換することは結構な力仕事になり、出来たとしても一定の誤りは避けられないのだろうと思います。
その様な訳でUnix/Linuxの世界では昔から漢字コードを変換するコマンドが複数存在したわけですが、現在最も優れているのは"nkf"だろうと思います。以下にnkfマニュアルを抜粋します。

NAME
nkf - ネットワーク用漢字コード変換フィルタ

DESCRIPTION
nkf はネットワークでメールやニュースの読み書きをするために
作られた、漢字コードの変換フィルタである。
このnkfの特徴としては、入力漢字コード系の統計的な自動認識
機能がある。このため、利用者は、入力漢字コード系が何である
かを知らなくても、出力漢字コード系のみ指定すれば良いことに
なる。 ただ、この判定機構は、理論的には完全ではないが、通
常のニュースやメールのメッセージについては確実に動作する安
全なものにはなっている。
現在、nkfが認識できる入力の漢字コード系は、いわゆる JIS
コード(ISO-2022-JP に基づくもの)、Shift_JIS (MS 漢字コード
)、 日本語 EUC(AT&T コード)、UTF-8、UTF-16 のいずれかであ
る。 出力する漢字コード系も、これらである。 入力は、ファイ
ルを指定しなければ、標準入力となる。
出力は標準出力である。

-g 自動判別の結果を出力します。

nkfの特徴は『自動認識機能』ですが、「ただ、この判定機構は、理論的には完全ではないが...」などとも言っています。

●例えば特定のファイルに対して漢字コードを判定させると...

$ nkf -g Servoset.svg
UTF-8

などと答えてくれます。

●ご質問の機能ではテキストファイルだけでなくバイナリファイル(pdf,excel,Word,exeファイル等等)を判別することも必要になります。

$ nkf -g Servoset.exe
BINARY
$ file Servoset.exe
Servoset.exe: PE32 executable (GUI) Intel 80386, for MS Windows

同じバイナリファイルでも、例えばdllファイルは...

$ nkf -g vcruntime140.dll
BINARY
$ file vcruntime140.dll
vcruntime140.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows

などと一応正確な回答を答えてくれます。ご質問の機能はここに上げたような機能を駆使して自分で作るしかないように思います。ご質問者様がその様なスクリプトを作成いただければ私もいただきたいです。
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございます!

>ご質問者様がその様なスクリプトを作成いただければ私もいただきたいです。

私はプログラミングのプの字も知らないので作成出来ません、、、(>_<)

お礼日時:2024/05/14 21:06

一般的に、文字コードというと、数字の半角の1をコンピューター内のデータとして表すコードを言いますので、0x31が文字コードになります



そうではなく、質問者さんが聞きたいのが、Shift JISやutf-8のことであれば、文字コードではなく、それはキャラクターエンコード(文字符号化)になります
https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97 …


質問に戻りますが、文字符号化と統一するのは、現状はほぼ不可能です

理由は、例えばファイルの拡張子から、テキストファイルに限定したとしても、テキストファイルに書かれているで文字列には、文字の符号化方式が情報が含まれていないため、プログラムからは、正確な符号化方式が判別ができないからです

ただ、符号化方式を判別するAIを作れば、解決(正解率が向上する)できるかもしれません
    • good
    • 1
この回答へのお礼

ありがとう

>そうではなく、質問者さんが聞きたいのが、Shift JISやutf-8のことであれば、文字コードではなく、それはキャラクターエンコード(文字符号化)になります

はい!そうです!Shift JISは時代遅れなので使いたくないのです、、、、!

お礼日時:2024/05/14 13:44

統一する方法を考える前に、その必要性を考えた方がよいと思います。

    • good
    • 1
この回答へのお礼

ありがとう

Shift JISは時代遅れなので使いたくないのです、、、、

お礼日時:2024/05/14 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A