2011-09-03 1 views
1

Ruby에서 UTF-8로 인코딩 된 문자열이 여러 개 있습니다 (예 : "HEC Montr \ u00e9al").Ruby 1.8.7에서 MySQL 데이터베이스에 삽입 할 때 유니 코드 형식이 손실되었습니다.

'mysql'gem을 사용하여 MySQL 테이블 (utf8_general_ci 형식)에 삽입하면 백 슬래시가 제거됩니다. 무엇을 줄까요? 도대체 무슨 일이 벌어지고 있는지 아십니까?

편집 :

예를 들어 문자열 :

>> p mystring 
"HEC Montr\\u00e9al" 

및 데이터베이스에

삽입 후 : 난 당신이 명시 적으로 UTF8을 기대하는 MySQL의 보석을 말해야 생각

HEC Montru00e9al 

답변

2

이 UTF되지 않습니다 :

JSON 인코딩 된 유니 코드 문자열의 ASCII 표현이다
'HEC Montr\u00e9al' 

. 당신은 제대로 어딘가에 JSON 입력을 디코딩하지 않을 또는 서버가 일반 텍스트를 예상 할 때 클라이언트 측 코드는 서버 JSON을 보내는

'HEC Montréal' 

:이 UTF-8 인 경우, 그것과 같을 것이다.

먼저 JSON 인코딩 문자열을 기대하지 않을 때 JSON 인코딩 문자열을 가져 오는 이유를 알아 내야하거나 JSON을 제대로 디코딩하지 않는 이유를 알아야합니다. 그런 다음 데이터베이스가 UTF-8을 mangling하는지 확인할 수 있습니다.

+0

감사합니다. JSON 인코딩 문자열을 얻는 이유를 알아낼 것입니다. – abcde123483

+0

괜찮습니다. 이것을 지적 해 주셔서 감사합니다! – abcde123483

+1

@ulvund : 걱정 마세요, 터널 비전에 대해 더 많이 알고 있습니다. "그럴 가능성이 없습니다"라고 생각하고 잘못된 오류를 찾고 있습니다. :) –

1

. 이런 식으로 뭔가 :

db = Mysql.init 
db.options(Mysql::SET_CHARSET_NAME, 'utf8') 
db.real_connect(... 
+0

역순으로이 작업을 수행했습니다 (db에 연결, charset 설정). 지금 당신의 방법을 시험해보십시오! – abcde123483

+0

아무런 문제가 없습니다./ – abcde123483

관련 문제