같은 일부 검색 문자열을 잘못 해석 문제,하지만 하지 무엇 I 묻고있어. 오히려,이 문제는 데이터베이스의 특정 필드가 검색 될 때 ASCII-8BIT로 태그 지정되고 대부분이 UTF-8로 올바르게 표시되기 때문에 발생하는 것으로 나타났습니다. , I 얻을 로우 (16)의 두 열 (앤 붙여 복사 된)와 동일한 값을 갖는 열 country
및 nationality
와 테이블의 예레일 3, mysql을/mysql2 ASCII-8BIT이 문제는 일반적으로 볼 "호환되지 않는 문자 인코딩 : ASCII-8BIT와 UTF-8"로 시작
는
irb(main):003:0> c = Country.find(16)
irb(main):004:0> puts "#{c.name}, #{c.name.encoding}, #{c.name.bytes.to_a}"
�land Islands, UTF-8, [195, 133, 108, 97, 110, 100, 32, 73, 115, 108, 97, 110, 100, 115]
irb(main):005:0> puts "#{c.nationality}, #{c.nationality.encoding}, #{c.nationality.bytes.to_a}"
�land Islands, ASCII-8BIT, [195, 133, 108, 97, 110, 100, 32, 73, 115, 108, 97, 110, 100, 115]
마찬가지로, 간단한 puts name
는 �land Islands
동안 준다 nationality
에 대해서는 "\xC3\x85land Islands"
- 동일한 바이트, 다른 표현을 제공합니다.
주어진 열에 대한 인코딩은 문자열에 ASCII가 아닌 문자가 있는지 여부에 관계없이 일정한 것처럼 보이므로 단순히 문자열에 문제가있는 것이 아닙니다. 즉, 모두의 값은 ascii로 해석되고 모두의 값은 UTF-8로 name
입니다.
이 문제는 단일 테이블로 제한되지 않으며 열이 잘못 인식되는 패턴을 찾지 못했습니다. 윈도우 7 64 비트
- 레일 3.0.0 : 여기에 는 설정 및 환경입니다 mysql2 모두가
- database.yml을가
encoding: utf8
을 포함 동일한 동작을 보여에는 mysql
- application.rb 포함
config.encoding = "utf-8"
- MySQL 데이터베이스, 테이블 및 두 열 모두 utf8로 정의됩니다.
- MySQL의 두 열 모두 varchar, 255, null 허용
- 데이터베이스를 액세스하기 위해 Rails를 새로 설치하고 정의 된 국가 모델을 제외하고는 문제를 재현 할 수 있습니다. 아직 신선한 1 줄짜리 데이터베이스로 시도하지 않았습니다.
여기에 무슨 일이 일어나는 지 아시나요?
아직이 문제에 대한 단서가 없습니다. –