2011-09-10 2 views
1

SQL Server 2008 R2를 데이터베이스로 사용하는 Ruby 3.0의 MacOS에서 응용 프로그램을 개발하고 있습니다. freetds와 tiny_tds를 통해 연결하고 있습니다.freetds를 통해 Linux에서 SQL Server에서 Rails 3 앱으로 잘못된 문자 인코딩

확장 문자를 사용하여 비계를 통해 데이터를 저장할 때 þþÆæó와 같이 잘 작동하며 SQL Server Management Studio에서 데이터를 볼 때 문자가 정확하고 레일스 UI로 다시 데이터를 읽을 때 올바르게 표시됩니다 .

freetds 및 tiny_tds를 사용하는 Linux 컴퓨터에 응용 프로그램을 배포 할 때 동일한 데이터베이스에 연결하면 UI에서 문자가 왜곡됩니다. 나는 문자가 브라우저에서 제대로 표시되는 리눅스 서버를 통해 데이터를 저장하지만, SSMS의 데이터를 볼 때 문자가 인코딩 된 읽을 수 있습니다 (I가 ÞÞðð를 입력) SSMS이를 얻을 때 :

ÞÞðð 
나는 database.yml을이 라인을 설정 한

Su�urnes 

:

encoding: utf8 

가 D가

이 나는 ​​맥에서 DB에 기록 소더 네스의 리눅스 서버에서 브라우저에서 얻을 아무것도 바꿔 치지 마. 나는 또한 freetds.conf 파일에이 라인을 설정

client charset = UTF-8 

SQL 데이터베이스는 코드 페이지로 Icelandic_CI_AS을 가지고 있지만 나는 그것이 맥 컴퓨터에서 제대로 작동하기 때문에 그게 잘못이 아니에요 확신 해요.

나는이 문제를 Passenger apache와 WEBrick에서 모두 테스트 했으므로이 문제를 일으키는 Apache라고 생각하지 않습니다.

그래서 Mac과 비슷한 방식으로 동작하도록 변경해야하는 Linux 설정이 있습니까?

기본적으로 값을 앞뒤로 변환하는 웹 서버와 데이터베이스 사이에는 뭔가가 있습니다.

편집 : * tsql 명령 줄 도구를 사용하여 db를 쿼리 할 때 텍스트의 올바른 인코딩을 얻습니다. 따라서 이것을 이해할 수있는 경로는 다음과 같습니다. 웹 클라이언트> Apache> Rails app> Tiny_tds> Freetds> SQL Server 문제는 Apache 사이트 또는 레일 응용 프로그램 자체에 있어야합니다. Apache 또는 WebBrick을 사용하면 실제로 문제가되지 않으므로 문제가 무엇인지 혼동합니다. 어떤 아이디어? *

감사합니다, 요한

답변

1

이 문제는 파일 freetds.conf이 문제가 발생 된 지정된 인코딩 한 것이 었습니다. 또한 database.yml 파일에 인코딩을 지정하지 않았는지 확인해야했습니다.