입력이 UTF16LE 인코딩입니다. 이 입력이 내 코드에 도달 할 때까지 LineNumberReader에 낀 FileReader로 둘러싸인 FileInputStream을 통과했습니다.Java 문자열에 불필요한 데이터가 포함되어 있습니다.
[, 1, p, i, ...]
공지 빈 요소 :
"1 piece of data like a string"
그러나,이 String에 값을 찾고의 라인을 따라 뭔가있을 것입니다 : 첫 번째 행은
는 같은 문자열을 제공합니다 스타트.
없음이 문자열이 여기 저기 기능의 몇 통과 Object로 변환하지 않고 기본적으로 그 보를 통해 넣어되고있다. 특정 시점에서, 문자열의 첫 번째 부분 만 (내 경우에는 십진수를 포함한 모든 숫자) 함수를 전달하여 실제 숫자로 구문 분석해야합니다.
이 String의 내용은 "1"
될 것처럼 보이지만 값에 말한다 :
[, 1, p, i, ...]
때문에 전체 문자열이 여전히있다.
어쨌든 ParseException
을 반환하고 해석 할 수없는 숫자를 예외 메시지에 인쇄하고 "1"은 분석 할 수없는 숫자라고 기록합니다.
진짜 문제는 이후의 라인이 선두 빈 요소를 제외하고 비슷한 동작을 표시하고 구문 분석으로 최고의 빈 요소로 나타납니다.
"그러나이 문자열을 살펴보면 값은 [, 1, p, i, ...]의 행을 따라 표시됩니다. 그건 말이되지 않습니다. String의 요소를 어떻게 확인 했습니까? Java 문자열은'char's의 순서이고, "빈 char"같은 것은 없습니다. 디버깅 할 때 정확히 무엇을 보았습니까? – sleske
sleske가 말했듯이, "empty"요소는 실제로 비어 있지 않습니다. 어떤 코드 포인트인지 알아보기 위해 숫자 값을 출력해야합니다. 내 생각 엔 BOM과 관련이있을 수 있다는 것입니다. – musiKk
이것은 BOM (내 이야기에 추가해야합니다)이지만 UTF16LE은 BOM을 가질 수 없으므로 LE는 이미 그렇게 말합니다. 그렇더라도 파서 인코딩은 명시 적으로 UTF16LE로 설정됩니다. 이클립스 디버거를 통해 문자열의 내용을 식별하고 내가 쓴 것은 이클립스가 내용이라고 말한 것입니다. –