2010-11-25 2 views
3

같은 일부 검색 문자열을 잘못 해석 문제,하지만 하지 무엇 I 묻고있어. 오히려,이 문제는 데이터베이스의 특정 필드가 검색 될 때 ASCII-8BIT로 태그 지정되고 대부분이 UTF-8로 올바르게 표시되기 때문에 발생하는 것으로 나타났습니다. , I 얻을 로우 (16)의 두 열 (앤 붙여 복사 된)와 동일한 값을 갖는 열 countrynationality와 테이블의 예레일 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 줄짜리 데이터베이스로 시도하지 않았습니다.

    여기에 무슨 일이 일어나는 지 아시나요?

  • +0

    아직이 문제에 대한 단서가 없습니다. –

    답변

    -1

    나는 비슷한 문제에 살고 있다고 생각합니다.

    는 MySQL의 DB 레일에서 datas가 떠 문자열로 변환 내가 retrivied 경우 : 행동 "쇼" Complemento라고하지만 DB에서 문자열

    열 "Complemento"와 "에스 타도"입니다 : 0.0 -> DB에서입니다 " apto 191 "

    Escola가 성공적으로 생성되었습니다.

    놈 : 실바 브라

    Endereco : 루아 박사 아르 날도

    NÚMERO 99

    Complemento : 0.|> DB "MG"입니다

    편집 - 0.0 : 상 파울로

    에스 타도 : 0 -> DB는

    시다 "191 APTO"입니다 뒤로

    +0

    코멘트 아래에 넣으십시오. – ajreal

    +0

    문자열에서 부동으로 바뀌기 때문에 다른 문제 일 수 있습니다. 나는 새로운 질문을 열어 사람들이 당신을 도울 수 있도록 세부 사항을 제시 할 것을 제안합니다. –

    0

    해결책을 찾았다면 mysql 또는 mysql2 gem 대신 ruby-mysql gem을 사용하십시오.

    관련 문제