2014-02-14 1 views
0

파이어 버드 테이블을 쿼리 할 때 인코딩 문제와 관련하여 도움이 필요합니다.파이어 버드 데이터베이스가 유니 코드/키릴 문자를 인식하지 못합니다.

나는 파이어 버드 마에스트로를 사용하여 파이어 버드 데이터베이스에 연결하고 : Connection string

문제는 내가 SQL 쿼리 파이어 버드에서 키릴 문자를 포함 할 때마다 올바르게 '이해'하지 않습니다.

는 예를 들어, 일부 키릴 문자로 쿼리를 고려하십시오 PRIM 행의 'Кириллица'값을 포함하는 행이 비록

SELECT * FROM ROYALTY 
WHERE ROYALTY.PRIM = 'Кириллица' 

그것은 어떤 값을 반환하지 않습니다. 라틴 문자를 사용하는 경우

그러나, 모든 것이 잘 작동 :

SELECT * FROM ROYALTY 
WHERE ROYALTY.PRIM = 'Latin letters' 

누군가가 무엇을 제안 할 수 있습니다, 제발?

여기에 스크린 샷 분명 내 지점을 만들 수 있습니다

  • :

    Error

    enter image description here

    나는 어떤 긍정적 인 결과 다음과 같은 캐릭터 셋을 가진 데이터베이스에 연결하려고했습니다 NON

  • ISO8859_5
  • DOS866
  • CYRL
  • WIN1251
  • UNICODE_FSS

추가 정보 :

  • 파이어 버드 버전 : 2.5.2
  • 파이어 버드 마에스트로 버전 7.7.0.1 (영어)
  • 러시아어와 영어 버전의 Windows를 모두 사용해 보았습니다.

답변

3

이 열에 사용하는 charset을 확인하고 시스템의 문자 세트 인 연결 문자 세트를 사용해야합니다. Flamerobin 또는 DatabaseWorbench를 사용해 보거나 Firebird가 될 수도 있습니다. 대 음악가가 도움을 줄 수 있습니다. 사용중인 도구와 분명히 관련되어 있습니다. 파이어 버드 자체는 키릴 문자를 사용하는 데 아무런 문제가 없습니다. 데이터베이스의 문자 집합에 대해 UTF8을 선택하십시오.

+0

감사합니다, Makowski! Flamerobin을 사용하고 있습니다. 그것은 키릴 문자로 완벽하게 작동합니다. 문제가있는 열 문자 집합을 확인했는데 NONE으로 설정되었습니다. 또한 NONE charset으로 데이터베이스에 연결되어있어서 문제가되지 않았습니다. –

+0

Makowski, FireRobin/Firebird를 사용하는 방법을 알고 있다면 다른 quesiton도 볼 수 있습니까? FireRobin은 훌륭하지만 키릴 문자로 뷰를 생성 할 수 없습니다. http://stackoverflow.com/questions/21797816/firebird-create-a-view-with-cyrillic-letters-in-where-clause –

1

여기서 문제는 매개 변수화 된 쿼리를 사용하지 않는 것입니다. IBExpert에서는 ": 이름"세미콜론과 매개 변수 이름을 입력 할 수 있으며 아래 창에 프롬프트가 표시됩니다. IBExpert Parameter Test

Java/C# .Net에서는 API를 사용하여 매개 변수가있는 쿼리를 만듭니다. 지금 당신이하고있는 일은 SQL 문자열에 ANSI가 아닌 문자를 제공하는 것입니다. 그러면 예상대로 저장되지 않습니다.

나는 당신이 Firebird Maestro를 사용하고있는 것을보고, 나는 그 제품이 매개 변수를 위해 무엇을 사용하는지 모르겠다. 그러나 그것이 무엇인지보기 위해 그들의 문서를 볼 가치가있다. http://www.sqlmaestro.com/products/firebird/maestro/help/10_04_00_query_parameters/ 실제로 콜론과 매개 변수의 이름이 같은 형식으로 나타납니다.

+0

감사합니다. , 로페즈. 이 부분적으로 내 질문에 대답하지만 문제를 해결하지 않습니다. 복잡한 쿼리를 사용하는 경우 매개 변수 폼을 통해 여러 쿼리를 수동으로 입력해야합니까? 이건 그냥 너트 야. 그보다 더 좋은 점은 없을까요? 또한 매개 변수를 사용하여 뷰를 만들려고했지만 Firebird에서 "SQL 오류 : 오프셋 1에서 정의되지 않은 메시지 번호의 BLR이 유효하지 않습니다."오류 코드 : -104. 유효하지 않은 토큰 " –

+0

안녕 Zerg. 네, 맞습니다. Firebird 용 SQL 정의는 ANSI 문자 만 허용합니다. 비 ANSI 문자를 저장해야하는 경우 매개 변수를 통해 제공해야합니다. 내가 SQL을 통해 UTF8 문자를 제공 할 수 있었던 가장 가까운 것은 16 진수를 사용하는 것입니다. 참조 : http://www.firebirdsql.org/refdocs/langrefupd25-hexbinstrings.html 예를 들어, "た ま ご"는 다음 쿼리를 사용하여 출력됩니다. rdb $ database에서 CAST (CAST (_utf8 x'E3819FE381BEE38194 'VARCHAR (100))를 blob로 선택하십시오. Maestro의 문서에 대한 링크를 추가했습니다. –