java.sql.BatchUpdateException: Data truncation: Incorrect string value: \xF0... [서비스네임].[테이블명].[컬럼명] at row 1
위와 같은 에러가 발생되었는데 MYSQL 전송시 이모지 데이터와 다르게 중국 간체자데이터로 인한 문제같은경우 좀 확인이 까다로운것 같음
찾아본 관련 내용을 정리해보면
- 잘못된 문자열 값이 항상 \xF0으로 시작됨
- 중국어 간체자(GB2312)
- 간자체(음과 뜻이 같은데 획이 간략화된 문자)
- 확장 중국어 문자는 4바이트 영역을 사용
- MYSQL 접속후에 'SHOW VARIABLES' 명령을 입력하여 언어셋 확인가능
- 테이블속성을 보면 Charset과 컬럼이 UTF8MB4
- Collation이 utf8mb4_unicode_ci나 general ci
- 하지만 조회된 character_set_*과 collation_*로 시작되는 언어셋이 다른경우 왠지 안되는것 같은 느낌
- set names은 mysql 도움말에 따르면 아래의 효과
- 타겟 서버와 설정이 어떤지 모르는경우 그냥 변경가능하는 듯
- GB2321은 중국어 간체, BIG5는 중국어 번체용 인코딩
- 쿼리 실행전에 'set names [언어셋]' 실행하면
- character_set_client|results|connection 언어셋 바뀌는 듯?
- 한중일 케릭터셋 리스트(CJK)은 MYSQL버젼에 따라 다를수 있다고 함