MySQLからDBをダンプした際に、一部の文字について濁点や半濁点が分離していることに気付きました。
例えば、以下のような感じです。
- プリンタで~→フ゜リンタて゛
- パソコンが~→ハ゜ソコンか゛
ただし、データの中には「データ」のように正常に一文字で表示されているものもありました。
しかも、上述の「プリンタ」の場合でも、レコードによって「フ゜リンタ」となるものと「プリンタ」となるものがあり、「濁点・半濁点ならば」や「プならば」のような特定条件で必ず再現するわけではなく、なるものとならないものがあるようです。とはいえ、完全ランダムではなく、「フ゜」になってしまったものは必ず「フ゜」になる、というように条件はある模様。
よくよく確認してみると、MySQLのデータ上では問題がないことが分かりました。
これを画面に出力し、TeraPadにコピペした際におかしくなっているようです。試しにVSCodeにコピペしたところ、分離の現象が発生しませんでした。
したがって、TeraPadへのコピペが問題であることが分かりました。
検索してみると、Unicodeには濁点や半濁点を「合成する合成用の濁点・半濁点」があるとのこと。これがTeraPadでは合成できず、文字化けするとのこと。
私の場合は文字化けせずに分離したのですが、参照した記事が2012年と古いので現在のTeraPadのバージョンとは何らかの差異があるのかもしれません(TeraPadのリリースノートまでは追っていませんので未確認)。
少なくともTeraPadではなくVSCodeを使用することで回避できるということが分かったので、メモしておきます。