2011-02-28 15 views
0

여기에 반복 질문이 있지만 그 중 아무 답변도 나에게 도움이되지 않습니다.C# : 유니 코드 문자를 해당 ASCII 문자로 변환하는 방법

시스템에서 유니 코드 텍스트를 수신하고 있습니다. 고객의 이메일 + 이름.

이 문자열을 내 SQL DB에 기록 할 때 일부 문자가 나타나고 \ u와 함께 나타납니다.

예를 들어 이메일이 DB에 점점 : 이름을 \ u0040domain.com DB를가 [email protected] 얻을 수 있도록 내가, ASCII로 내 C# 프로그램에서 유니 코드 문자열을 변환하는 방법

.

또한 예를 들어 ... 동등 또는 아무에게도 "에르난 π"을 "에르난"

덕분에 특수 문자를 교체!

답변

2

IMHO는 21 세기에 좋은 생각이 아닙니다. 특히 메일이 머리글과 본문에서 유니 코드를 지원하도록 변경 되었기 때문에 IMHO가 ASCII로 다시 ASCII 형식으로 변환하여 일부 모호한 저장소 또는 기술적 이익을 얻는 것은 바람직하지 않습니다.

http://en.wikipedia.org/wiki/Unicode_and_e-mail

당신은 에르난에 에르난을 변환 할 이유는 검색을 위해 경우, 당신은 당신의 데이터베이스에 악센트 문자 구분 (AI) 데이터 정렬을 사용하여보고, 또는 그렇게하기를 강요한다 -이 SO post 참조 .

하지만 두 번 확인해야 할 일은 문자열이 데이터베이스에 저장되기 전에 미리 인코딩되지 않은 것입니다 (DB 열이 유니 코드를 허용하도록 설정되어 있다고 가정하면 - 즉 NVARCHAR 등). 문자 '@'는 '\ u0040'이 아니라 '@'(UTF 16에서 0040)로 저장됩니다.

EDIT : 문자열의 "\ uNNNN"인코딩은 Java 또는 Python에서 발생했을 수 있습니다. 아키텍처의 전자 메일 문자열 데이터를 추적하여이 인코딩 소스를 찾고 UTF-8과 같은 C#으로 해독하기 쉬운 것으로 변경할 수 있습니다.

How do I treat an ASCII string as unicode and unescape the escaped characters in it in python?

+0

감사 Nonnb ... 에 대해 읽기 문자열 변수. 나는 원래 데이터에서 유래했다고 생각한다. 그래서 어떻게 변환 할 수 있습니까? 다시 한번 감사드립니다! – Gabrielizalo

0

당신은 이러한 작업을 위해 Encoding.Convert를 사용할 수 있습니다. 좋아 .. 문제가없는 우리는 유니 코드의 데이터를 저장할 수 있다면 ... 우리의 열을 NVARCHAR ... 있습니다 및 C#에서 내가 따로 만들 아무것도 할 해달라고 MSDN

관련 문제