私はUTF16LEエンコーディングの入力を持っています。この入力が自分のコードに到達するまでに、LineNumberReaderに格納されたFileReaderで囲まれたFileInputStreamを通過しました。Java文字列に無関係のデータが含まれています
[, 1, p, i, ...]
お知らせ空の要素へ:
"1 piece of data like a string"
しかし、この文字列に値を探しての線に沿って何かになります:最初の行が読み込ま
は、のような文字列を与えます開始。
いいえ、この文字列は、ここでは2つの関数に渡され、オブジェクトに変換され、基本的にはペースを通過しています。ある時点で、文字列の最初の部分(1または私の場合、小数点を含む任意の数)のみを実際のNumberに解析する関数に渡す必要があります。
この文字列の内容は"1"
ように見えますが、値には、それは言う:
[, 1, p, i, ...]
ので、文字列全体がそこにまだあります。
いずれにしても、ParseException
が返されます。解析できない数値が例外メッセージに出力され、「1」は解析できない数値になります。
実際の問題は、後続の行が先頭の空の要素を除いて同様の動作を示して解析するため、先頭の空要素のように見えます。
"しかし、この文字列を見ると、値は[、1、p、i、...]の行に沿ったものになります。それは意味をなさない。どのように文字列の要素を特定しましたか? Java文字列は 'char'sのシーケンスであり、"空文字 "というものはありません。デバッグ時に正確に何を確認しましたか? – sleske
sleskeが示唆するように、「空の」要素は実際には空ではありません。数値ポイントを印刷して、どのコードポイントであるかを確認する必要があります。私の推測では、それはBOMと何か関係があるかもしれないということです。 – musiKk
これはBOM(私は私の話にそれを加えておくべきです)ですが、LEはすでにそれを言っているので、UTF16LEはBOMを持つことはできません。それでも、パーサのエンコーディングは明示的にUTF16LEに設定されています。 私は、Eclipseデバッガを介して文字列の内容を識別し、私が書いたものは、Eclipseがコンテンツと言うものです。 –