2012-11-13 8 views
0

유니 코드 문자열이 있는데, "U + 660E"라고 가정 해 봅시다. 해당 문자를 표시하고 싶습니다.이 경우는 분명합니다. 밝기를 찾으려면 this page (ctrl-F)을 참조하십시오. 지금까지유니 코드 문자열에서 중국어 문자로

내 코드 :

string unicodeString = reader.GetString(0); 
unicodeString.Trim(); 

Encoding codepage = Encoding.GetEncoding(950); 
Encoding unicode = Encoding.Unicode; 
byte[] encodedBytes = codepage.GetBytes(unicodeString); 
//unicodeString = Encoding.Convert(codepage, unicode, encodedBytes).ToString(); 
unicodeString = unicode.GetString(encodedBytes); 
richTextBox1.Text = unicodeString; 

내 출력은 "⭕ 㘶 䔰"입니다. 어디서 잘못 됐는지 아십니까?

+0

'reader.GetString (0)'은 올바른 문자열을 반환 했어야합니다. –

+0

Nop .. reader.GetString (0)을 제외한 모든 것을 주석 처리 한 후 정확한 문자열을 "U + 660E"로 반환합니다. DB에 '변환'할 필요가 없습니다. DB는이를 리터럴 문자열로 처리하기 때문입니다. – Danny

답변

1

. 유니 코드와의 직접적인 거래. 을하지 않으면 인코딩 게임을해야합니다. 입력이 UTF-8 또는 UTF-16인지 여부를 독자에게 알려준 다음 일반 문자열로 처리하십시오.

richTextBox1.Text = reader.GetString(0) 
+0

독자가 SQLDatareader 인 경우 중요합니까? (SqlDataReader의 리더 command.ExecuteReader =()) {}} 동안 (reader.Read()) { – Danny

+1

SQL 데이터 판독기는 유니 코드를 처리하여 다음 코드에 싸여있다. 열이 유니 코드 텍스트 (nvarchar, nchar 등)로 선언되었는지 확인하십시오. –

+1

감사합니다! 나는 여기서 그것을 처리 할 수 ​​있다고 생각한다. 너는 明 (빛나다) 축복이다. – Danny

1

CP-950으로 변환 할 필요가 없습니다. C#은 유니 코드 스루 및 스루입니다. CP-950이어야하는 파일로 출력하지 않는 한 유니 코드로 입력하고 인쇄하십시오.

관련 문제