csvファイルをJavaで読み込んだ後,文字列処理をする際にめちゃくちゃ悩まされた。
- 経緯
- 文字列の最初に半角スペースがあるので,int型に変換できなかった.
- なので,半角スペースを消そう!
- …半角スペースが消えない!!!
半角スペースを消す
単純な方法としては String.trim() を行う.
(この時のスペースのunicodeは**\u0020**)
それでも消えないスペース(unicode \u00A0など)があるが,以下のサイトにまとまっていたので,参考に
https://eng-entrance.com/java-string-trim
でも,今回のスペースはそれだけでは消えなかった…
半角スペースのように見えるものを消す
エラーログに出力されるときは" "(通常のスペース)と同じ表示が出る.
この時に出力されたスペースをコピーして,貼り付けると通常のスペースと違う文字コードが表示される
その時のunicodeが
\uFEFF
………えっと,だれですか?
調べると,これがBOMのunicodeだった
http://e-words.jp/w/BOM.html.
これがわかれば置換できる!
String.replace("\uFEFF","") で対応
スペース(のようなもの)が消えた!解決
読み込んだcsvがUTF-8を使用するものだったからエラーが出ていたみたい