アプリ版:「スタンプのみでお礼する」機能のリリースについて

ファイル名に日本語と英語以外が交じるとフリーソフトに寄ってはエラーを起こします。
そこで、予めファイル名に日本語と英語以外が交じっているかチェックしたいのですがどのようなソフトがありますでしょうか?
もしくは、PerlかPythonのスクリプトがあれば教えていただければ幸いです。

A 回答 (5件)

たぶんあなたの求めているものは「Shift_JIS以外の文字」です。

(より正確に言うならShift_JISでなくMS932・CP932・Windows-31Jなどと呼ばれるもの)

PerlやPythonで書くならファイル名を取得してMS932に変換してみてエラーが出るかどうかで判断できます。
簡易的には、dirコマンドでファイル名を出力して半角疑問符に化けていれば確実にMS932外です。ただしこの方法はäやßなど一部の文字を取り逃します。
chcp 65001でコードページをUTF-8に変更してからdirでファイルに出力し、chcp 932で戻してからdirでファイル出力したものをwinmergeなどのソフトで比較するという手段が思いつきます。
    • good
    • 0
この回答へのお礼

ありがとうございます!
OSがWindowsですのでCP932のようです。最近はUTF8ばかり無意識に使っており言われて気づきました!ファイル名取得から変換でのエラーで見つけたいと思います。
ただ、Windowsで膨大なファイル数を扱いエラーが出て困っている人もいるでしょうから、ベクターなどのフリーソフトで対応しているものがあればと思いましたが意外と無いものですね。

お礼日時:2020/01/24 09:28

まずは念の為。


「日本語と英語」という「言語」ではなく「日本語で使われている文字と英語で使われている文字」


PerlにもPythonにも、ファイル名一覧を取得する方法が用意されているので、
ファイル名取得→文字種を調べて、日本語の文字、英語の文字以外が使われていないことを確認
とできなくはありません。


ただ。
「日本語と英語」という認識は多分間違っていています。

こういう場合の主な原因は、「1文字=2バイト(以上)となっている日本語の文字を、全て1文字=1バイトで処理してしまう」ことです。
アプリ中で文字化けが発生しているような状態です。
有名なのでは、Shift_JISの「ダメ文字」があります。

これは、ファイル名だけではなく、フォルダ名も関係することがあります。
特に、「設定ファイルをユーザーフォルダ (C:\Users\ユーザー名)に保存する」という仕様だと、この「ユーザー名」に日本語があることで、設定ファイルに正常にアクセスできない、ということも起り得ます。

無難なのは
・関係するフォルダ、ファイル、ユーザー名は 「ASCIIの範囲の文字(いわゆる半角英数記号)」だけにする
ことです。
    • good
    • 1

そもそも綴りのみから言語を判断するのは無理だと思うんだけど. 有名なところだと, tornado は英語, フランス語, ドイツ語

, イタリア語で全く同じ綴りになるわけだし.
    • good
    • 0

なんだろう。


根本的なところを理解していない気がするのは自分だけだろうか。

(´・ω・`) どうせユーザー名に漢字などの2バイト文字を使ってしまってフォルダ名が漢字になっているってだけだと思う。
ならばエクスプローラーで「User」フォルダを覗いてみればいい。
漢字表記があるか目視で判断できる。

ぶっちゃけ有名なトラブルだよ。
    • good
    • 0

>ファイル名に日本語と英語以外が交じっているかチェックしたい



エクスプローラーで見るとわかる。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
ファイル数が非常に多いため何かしらのソフトやスクリプトでで自動判別できればと思っています。また、機種依存文字や制御文字のようなもの、他の言語からの引用があると判別がつかず人力では見落としが多く難しいというのもあります。

お礼日時:2020/01/21 02:50

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