scintilla # prog

  • 一旦挫折したんだけど、シンチラをまた始めようと思う
    挫折した理由は、基本的な保存の部分
    作り込んでかなり使えそうになってからここで躓いた
  • エンコードの話です
    何とか読み込みはわかってきたんだけど、保存が怖い
    間違ったエンコードで読み込んでそのまま保存してしまったら文書が破壊されてしまう
    あるエンコードで100%エラー無しで読み込めない限り保存もすべきでは無いと思うようになった
    いい加減なコードである程度エンコ判定をして読み込んだときに、ちょっと見は良さそうでも文字化けしている箇所がある場合がある
    これはどうしようもないものなのか、エンコードを変えるべきなのか
    そういった判断が出来ないと保存もすべきでは無い
    で、前に進めなくなってきた
  • 秀丸で保存するときに、化けてるとそのままで良いか聞いてくるよね。この機能が必要だと思うようになってきた

全てutf-8にしてしまえば問題ないんだけど

memo

'①' --> 8740(CP932)

100 日本語 (シフト JIS) - CP932 文字コード表 比較 9,402文字

96.03% 日本語 (シフト JIS) - shift_jis No 7,070
92.88% 日本語 (Mac) - x-mac-japanese ㈰ 7,331
59.16% 日本語 (シフト JIS) - shift_jis2000 ① 11,414
59.09% 日本語 (シフト JIS) - shift_jis2004 ① 11,424

素晴らしいサイトだ
https://uic.jp/charset/

python3.7 公式ドキュメント
https://docs.python.org/ja/3.7/library/codecs.html#standard-encodings

pythonが扱うコードでshiftjis系は四つ

cp932 日本語
shift_jis 日本語
shift_jis_2004 日本語
shift_jisx0213 日本語

cchardet の判定ミスって事かな? shift_jis 以外なら全てイケてたのに どういうことなんだろ?
cchardetだと no の判定もある、これの意味は?

pathlib の使い方 <---いいな!!

https://note.nkmk.me/python-pathlib-file-open-read-write-unlink/

https://docs.python.org/ja/3/library/pathlib.html

from pathlib import Path

PurePosixPath('my/library/setup.py').name ファイル名のみ
'setup.py'
PurePosixPath('my/library.tar').stem       同拡張子無し
'library'
PurePosixPath('my/library/setup.py').suffix   拡張子のみ
'.py'

p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
p.with_name('setup.py')                 名前だけ変えれる
PureWindowsPath('c:/Downloads/setup.py')

・テキストの読み込みは必ずエンコードしてバイナリデータに対応する文字の絵柄を決めなければならない

python

・エンコードはファイルオープン時に指定するが無ければshift-jis(cp932)になる

scintilla
・LoadFile~不明だが、utf8 utf16 は正しく読み込む
・SaveFile~必ずshift-jisになる
     ~utf8を指定してPythonで保存は出来るが、改行がおかしくなる

そもそもファイルのload、saveはwxにはあるがQtにはない
ドキュメントを見ても無いので、wxの独自仕様なのかもしれない
であれば、エンコード部分はPythonでやる、scintillaには関係ないのかも

scintillaでもcodePageの設定はできるが、これはキャレットの移動を制御するだけみたい

setUTF8 がQtにはあるがwxにはない

(Windows) Python3でのUnicodeEncodeErrorの原因と回避方法
https://qiita.com/butada/items/33db39ced989c2ebf644

END

Close