7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Javaでtrimしても消えないスペースに悩まされた話 原因はBOM

Posted at

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を使用するものだったからエラーが出ていたみたい

7
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?