いつものようにExcelファイルを自作のpythonスクリプトで取り込んでいたところ、「UnicodeEncodeError」。UTF-8で処理できないコードポイントの文字があるよ、と。嫌なエラーが出たなぁ、なんか変な文字使っているのかなぁ、などと思いつつ見ていたら、やはり文字化け。しかしその文字化けの原因が、ドラッグでコピー操作したから、というなんともよくわからないものだった。
謎の文字化け
よく意味がわからない。Windows 10, Excel 2016の環境下での出来事だ。
Excelには、ドラッグすることで、セルの内容(文字列)を他のセルにコピーできる機能がある。まぁ、表計算ソフトではおなじみの機能だ。なのだが、どうも、それで不思議な文字化けの現象が起きた。
具体的に言うと、
あいうえおかきくけこさしすせそ
というような文字列を、ドラッグで他のセルにコピーしていくように操作したところ、
あいうえおかきくけこさj3おd;
というように、文字列の途中から、どういうわけか突然の文字化けが生じたらしい。これは再現性があり、どうやっても文字化けする。なぜ?
そして、Ctrl-c + Ctrl-v でコピー&ペーストをすると、これは正常にコピーできた。つまり、ドラッグによるコピーの操作の時だけ、文字化けする。おう??
他の表計算ソフトでは文字化けしない
ためしに、OSを変えてMac環境下、iWorkのNumbersを使用して、同様の操作を行ったところ、これは正常にコピーできた。
次に、Google スプレッドシートを使って開き、同様の操作を行ったところ、これも正常にコピーできた。
……いったい、なんだろう?
Windowsは文字コード関係が鬼門なので、内部で何かしら悪いことが起きているのかもしれないが、文字列の途中から、というのがなんとも不思議だ。Ctrl-c + Ctrl-v なら何の問題もないし……。
正直、理由が皆目見当つかない。本当にただの文字列で、間に計算式が入っているわけでもないのに。この現象を回避するには、やはりExcelを使わないという選択しかあるまい(ぶん投げ)。
いや実際、どうしようか。。。
ところで、Excelでドラッグによるコピーなんかをするときに表示されるあの黒い十字は、フィルハンドルというらしい。初めて知った(「フィル ハンドルの表示と非表示を切り替える - Excel」)。どうでもいいっちゃいいけれど。なんでも、名前があるものだ。
コメント