JetBrains系のエディタで標準漢字以外を使う時の注意

Python を書く時、私は PyCharm を使っています。
このエディタはとても高機能なのですが、今回この高機能さ故にハマってしまいました。

やっていたこと

ある機能のテストのため、Pythonで ↓ のような文字列の変数を作成しました。
        jis13 = "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼∮∑∟⊿"
        jis89 = "纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"
        jis90 = "忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"
        jis91 = "犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"`
この 悪の魔物とかが召還できそうな 文字達は、全て連携するシステムでエラーになってしまうため、入力を受け付てはいけない文字でして、エラーチェック関数で弾かないといけないものでした。
(もう少し補足しますと、これらはJISX0213という文字コードで拡張された文字になります。2000年に規格が制定されるまで、 「使わないし、別に対応しなくていいんじゃない?」 というかわいそうな扱いを受けていた文字です)
このテストを走らせたのですが、なぜか一部の文字はチェックを通過してしまったのです。

通過してしまった文字

なぜ?となり、通過した文字がどのようなものか見てみました。
逸 羽 益 館 飼 諸 祥 神 (略)
あれ?なんか普通の文字じゃないですか?
本当にこんな文字が今まで使えなかったんでしょうか?「神」とか よくインターネットで見た 気がするんですけど。。。
最初に参照したWebサイトを改めて見たところ、ページに載っていた文字はこのようなものではありませんでした。
実際に載っていたのは…
逸 羽 益 館 諸 祥 神 (略)
全然違うじゃないですか!
確かに私は、上のような文字列をコピーして持ってきたハズなんですが。
テストコードを見てみたところ、確かに 文字列には「逸や羽」ではなくて「逸や羽」が入っていました。
一体いつ、文字が変わってしまったんでしょう?

勝手に文字を置換する PyCharm

すでにオチが読めている方も多いでしょうから結論から言いますと、PyCharm のエディタにペーストする瞬間に変わっていました
どうやら、IntelliJ 系のエディタは 標準漢字ではない文字を勝手に標準漢字に直してくれる みたいです。
(理由はハッキリとは分かりませんが、機種によっては文字化けになるから…?)
Emacs を使って文字をペーストして PyCharm でテストコードを走らせたところ、問題は解消されました。
変えるんだったら、せめてバルーンとかで通知をだして勝手に変えないで欲しいです…
JetBrains 系のエディタでコードを書いている最中に written by 黑靑 とか書きたくなった時には、この記事のことを思い出してください。

コメント