2011-12-19 2 views
8

텍스트 파일의 유니 코드 문자열이 있습니다. 그리고 나는 진짜 인물을 보여주고 싶다. 예를 들어C에서 유니 코드 문자열을 이스케이프 처리하는 방법

: StreamReader.ReadToLine() 사용

텍스트 파일에서 문자열을 읽어
\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b 

는, 그것은 탈출 \'\\'에 같은 원하지 않는 "\\u8ba1", 등.

그것은 텍스트에서와 같은 유니 코드 문자열을 표시합니다. 내가 원하는 것은 실제 캐릭터를 표시하는 것입니다.

  1. 어떻게 결과 문자열에서 "\\u8ba1""\u8ba1"으로 변경할 수 있습니까?
  2. 문자열을 읽으려면 다른 Reader를 사용해야합니까?
+0

[XML 문서를 읽을 때 \ r \ r \ n \ n 등을 가져 오는 이유는 무엇입니까?] (http://stackoverflow.com/questions/5980968/why-when-i-read- from-an-xml-document-do-i-get-rrnn-etc-etc) – dtb

+0

StreamReader 생성자에서 인코딩을 제공 할 수 있습니다. – Anand

+0

가능한 유니 코드 이스케이프 시퀀스를 .NET 문자열의 유니 코드 문자로 변환하는 방법 http://stackoverflow.com/questions/183907/how-do-convert-unicode-escape-sequences-to-unicode-characters-in-a-net-string) – dtb

답변

14

당신이 아무것도 언 이스케이프 할 필요가 없습니다

var input1 = "\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b"; 

// input1 == "计算机•网络•技术类" 

같은 문자열이있는 경우. 그것은 문자열 자체가 아닌 이스케이프 시퀀스가 ​​포함 된 문자열 리터럴입니다.


당신은

var input2 = @"\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b"; 

같은 문자열은 다음과 같은 정규식 사용하여 이스케이프 처리 할 수있는 경우 : 인터넷 검색을 할 때이 질문은 첫 번째 결과에서 나온

var result = Regex.Replace(
    input2, 
    @"\\[Uu]([0-9A-Fa-f]{4})", 
    m => char.ToString(
     (char)ushort.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier))); 

// result == "计算机•网络•技术类" 
+1

하나는 정적를 사용 'Regex.Unescape'. – Oded

+2

아니요, Regex.Unescape는 Regex 문자 전용입니다 – marsze

+0

정말 고맙습니다. 당신은 내 하루를 만들었습니다 –

0

을하지만, 나는 생각했다

using System.Web; 

//... 

string x = HttpUtility.UrlDecode("Ingl\u00e9s"); 
Console.Write(x); // Inglés 
,369 : 간단한 방법이 있어야한다 ...이 내가 사용 결국 무엇인가
관련 문제