2010-04-27 5 views
0

유니 코드 데이터를 텍스트 상자에 표시하는 C# 응용 프로그램을 만들어야합니다.SQL Server에서 비 유니 코드 필드에 varchar 형식으로 직접 저장된 유니 코드 데이터를 검색하는 방법

그러나 SQL Server 열 저장소에는 유니 코드 데이터가 들어있는 varchar 데이터가 있습니다. 그러나 varchar는 비 유니 코드 기반이므로 "????????"와 같은 문자열을 표시합니다.

글쎄, 내가 직면하고있는 문제는 다른 종속 응용 프로그램이 실행 중일 때 열 유형을 변경할 수 없다는 것입니다.

답변

0

SQL Server에서 varbinary (...)로 캐스팅 된 데이터를 읽은 다음 인코딩을 지정하는 C#으로 자신의 StreamReader를 만들 수 있습니다. .NET에서 사용할 수있는 5 가지 표준 유니 코드 인코딩이 있으므로 데이터 인코딩 방법을 알아야합니다.

1

varchar에 유니 코드 데이터를 저장할 수 없으며 열의 데이터 정렬로 변환 할 수 없습니다. 따라서 유니 코드는 varchar 열에 저장되어있을 때 완전히 다른 코드로 인코딩되어 손실되었을 수 있습니다. ?????이 표시되면 인코딩이 저장 될 때 ANSI 값에 매핑되는 문자를 찾지 못하고 대신 물음표가 저장된다는 것을 의미합니다. 데이터베이스에 유니 코드를 저장하려는 경우 올바른 해결책은 열의 데이터 형식을 변경하는 것입니다. 열의 데이터 형식을 변경할 수없는 경우 nvarchar에 설정된 열을 추가하고 유니 코드 원본이 해당 열을 읽고 쓰는지 확인하십시오.

+0

종속 응용 프로그램을 새 열로 변경할 수있을 때까지 varchar 열에 계속 써야 할 수도 있습니다. 모든 변환이 완료되면 varchar 열을 삭제합니다. – HLGEM

+0

@HLGEM - 재미있는 질문은 "무엇을 써주시겠습니까?"입니다. 값이 Unicode의 경우, 지정된 열의 데이터 정렬로 변환 할 수없는 경우가 있습니다. – Thomas

+0

당신은 당신이 할 수있는 것을 복사 할 필요가 있습니다. 그렇지 않으면 다른 응용 프로그램은 새로운 열로 변환 될 때까지 필요한 정보를 누락하게됩니다. 이것은 현재 상황보다 나쁘지 않고 대부분의 기록이 읽기 쉽습니다. 그리고 데이터가 조금 이상하다면, 레거시 애플리케이션에 새로운 칼럼 사용에 적응해야 할 이유가 생깁니다. – HLGEM