2016-08-24 4 views
1

MySQL에서 jackson을 사용하여 yaml 데이터를 구문 분석하려고하지만 특수 문자가 있다는 오류가 발생합니다.잭슨 오류 : 허용되지 않는 문자 ''(0x0) 특수 문자는 허용되지 않습니다.

com.fasterxml.jackson.databind.JsonMappingException: special characters are not allowed 
[Source: [email protected]; line: 13, column: 68] (through reference chain: com.app.ResultContentModel["opinion"]) 
... 
Caused by: com.fasterxml.jackson.dataformat.yaml.snakeyaml.error.YAMLException: special characters are not allowed 
at [Source: [email protected]; line: 13, column: 68] 
... 
Caused by: unacceptable character '' (0x0) special characters are not allowed 
in "'reader'", position 1027 

내 종속 파일 모양이 같은 : 내가 정규식 사용을 대체하기 위해 노력하고있어

<dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
</dependency> 
<dependency> 
     <groupId>com.fasterxml.jackson.dataformat</groupId> 
     <artifactId>jackson-dataformat-yaml</artifactId> 
     <version>2.8.1</version> 
</dependency> 

:이 같은 오류 뭔가 얻을

Pattern nonASCII = Pattern.compile("[^\\x00-\\x7f]");//("[^\\x00-\\x7f]"); 
resultContent = Normalizer.normalize(nonASCII.matcher(resultContent).replaceAll(""); 
ResultContentModel rc = mapper.readValue(resultContent, ResultContentModel.class); 

을하지만 여전히하지 않았다 작업. 어떻게해야합니까?

+0

'.replaceAll ("[\\ x00 - \\ x08 \\ x0B \\ x0C \\ x0E - \\ x20] +" "") " –

+0

다른 대체물을 연결하려고 시도해도 yaml을 인식하지 못했습니다. 데이터. –

+0

이것이 내 의견에 대한 피드백이라면 정규식은 어떤 YAML 데이터와도 일치하지 않지만 원치 않는 제어 문자를 제거한다는 점에 유의하십시오. –

답변

2

비 ASCII + 모든 문자를 00에서 20 (공백)까지의 16 진수 코드와 일치시키는 것으로 보입니다.

\x00-\x20을 제거하는 데 필요한 모든 제어 문자와 일치되고 [^\x00-\x7f] 비 ASCII 문자와 일치합니다

Pattern nonASCII = Pattern.compile("[^\\x00-\\x7f]+|[\\x00-\\x20]+"); 

사용.

한정자는 한 번에 일치하는 문자 청크를 제거/교체하기 위해 1 회 이상 일치합니다.

관련 문제