結論
先に結論を記載しておく。
今回問題になった2つのハイフンは以下の文字コードである。
記号 | Unicode番号 |
---|---|
- | U+FF0D |
− | U+2212 |
発生した現象
データベース上の2つのテーブルに登録した文字列が、一致しているかどうかを判定して処理をするシステムを構築していた。
このとき、データベース上の2つのテーブルには「サンプル-1」「サンプル−1」と登録されていた。
この文字列を比較して一致判定をするが一致せず、原因を探してみるとハイフンのような文字が文字コードの異なる別の記号だったことが確認できた。
これらの文字列は顧客からExcelにてもらったファイルをインサートしただけなので、文字コードの違いに気づくのに時間がかかった。
それぞれ何の記号なのか?
U+2212
せっかくなので、今回の2種類の記号が何の文字なのかを少し調べてみた。
U+2212
に関しては先人がQiita上にまとめてくれた一覧に記載されているので、そちらの記事リンクを貼り付けておく。
上記の記事によると U+2212
は全角のマイナス記号のようだ。
U+FF0D
U+FF0D
に関しては上記の記事にも記載がなかったので、調べてみると「全角ハイフンマイナス」という記号らしい。
「ハイフンマイナス」と呼ばれている理由としては、コンピュータ上ではハイフンとマイナスを区別していないので、「ハイフンマイナス」という名称になっているそうだ。
まとめ
今回は、顧客からもらったExcelファイルをそのままインサートしたので、文字コードの違いに気づかなかった。
顧客に限らず他人が作成したファイルをデータベース上で扱うときは、ハイフンのようなややこしい文字列が含まれる場合は、文字コードのことを頭の中に入れておくと問題の早期発見につながるかもしれない。
参考資料