文字化けしないかのテストをするために、とりあえず全ての文字を調べようとしています。
やりたいことがいまいちよく分からないのですが、
文字化けのテストをするためのテストデータのファイルを作りたい、といことで良いでしょうか?
上記コードは問題ないでしょうか…
漢字として認識できないコード(NULL文字等)も含まれている為、ダメそうな気がします。
~~下記に Python で下記のようなサンプルがありました。文字一覧を取得したいのであれば、こちらが参考になるのでは、と思います。
~~
■ Unicodeの中のJIS X 0208に当たる文字を取得
https://nakamura001.hatenablog.com/entry/20110108/1294453032
といっても、
■ Shift-JIS / JIS X 0208 の文字コード / Unicode の文字コード が列挙されたファイル
http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
から、対象のコードをファイル出力しているようですけど。
Shift-JIS の文字の一覧を出力するように修正したサンプルはこちらになります。
<追記>
上記のサンプルでは CP932 の情報が取得できない為、回答内容を修正させて頂きます。
「Shift JIS」と「CP932」について改めて確認してみました。
Python における日本語の文字コード指定としては以下のコード指定が可能です。
・cp932
・shift_jis
・shift_jisx0213
・shift_jis_2004
詳しい説明は下記にありますが、大きな違いとしては機種依存文字が使えるか否か、ということのようです。
■ Python♪Windowsの「Shift JIS」の落とし穴
https://snowtree-injune.com/2020/05/15/codec-py003/
質問者さんが確認したい「Shift JIS」というのは機種依存文字が使える「CP932」のことではないでしょうか?
■ "shift_jis" と "cp932" の比較結果
質問者さんのコードを少しだけ修正してみました。
isprintable()
を用いて、出力可能な文字のみを表示するようにしてみました。
こんな感じでいかがでしょうか?
python
1import codecs
2dec=codecs.getdecoder('cp932')
3for i in range(256):
4 try:
5 test=dec(bytes([i]))[0]
6 if len(test)==1 and test.isprintable():
7 print(test)
8 except:
9 pass
10
11for i in range(256):
12 for j in range(256):
13 try:
14 test=dec(bytes([i,j]))[0]
15 if len(test)==1 and test.isprintable():
16 print(test)
17 except:
18 pass
19
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/26 07:21
2021/12/26 11:20
2021/12/26 15:26
2021/12/26 23:29