2008-10-27 9 views

답변

77

출력으로 예상 한 것을 .NET에 알리기 위해서는 인코딩을 사용해야합니다. 예를 들어, UTF-16 : 이것처럼

var result = System.Text.Encoding.Unicode.GetBytes(text); 
+4

유니 코드보다 System.Text.Encoding에서 훨씬 더 많은 인코딩이 있습니다 : –

+1

Joel : 당신이 필요로하는 것 중 하나를 이해했는지 확인하십시오. 금후 나는 "예를 들면"썼다. ;-)하지만 귀하의 의견은 물론 유효합니다. –

+0

:) 비 UTF16 인코딩이 어디에 있는지 보여주기 위해 노력하고 있습니다. 아마도 더 잘 표현했을 것입니다. –

7

:

당신이 사용하는 어떤 인코딩
string test = "text"; 
    byte[] arr = Encoding.UTF8.GetBytes(test); 
14

? 콘라드의 거의 아래로를 얻었으나, 거기 다른 사람이 있습니다 당신은 잘못 하나 바보 같은 결과를 얻을 수 :

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text) 

XXX가 될 수 있습니다

ASCII 
BigEndianUnicode 
Default 
Unicode 
UTF32 
UTF7 
UTF8 
38

먼저 워크 아웃하는 당신이 원하는 인코딩을 : 먼저 a bit about Unicode을 알아야합니다.

다음 작품은 System.Text.Encoding에 해당합니다. 내 Core .NET refcard을 설명 일반적인 것들, 어떻게 Encoding의 정적 속성에 의해 또는 Encoding.GetEncoding를 호출하여 예 : 인스턴스를 (얻는 대부분.

마지막으로, 가장 쉬운 방법이다 (당신이 한 번에 모든 바이트를 원하는 여부를 작동 작업 방법 - Encoding.GetBytes(string)을 한 번 호출하면 완료됩니다.) 또는 청크로 나누어야하는지 여부 - 어떤 경우에는 Encoding.GetEncoder을 사용하고 한 번에 조금씩 인코딩하려고 할 것입니다. 인코더는 상태를 유지 관리합니다

+2

@JonSkeet : 당신 (또는 다른 누군가)이 실제로 바이트를 해석하려고하지 않는 한 엔코딩이 실제로 필요하지 않습니까? 압축, 암호화, 난독 화와 같은 작업의 경우 엔코딩이 관련성이없는 것처럼 보입니다. 필요하지 않으면 문제를 해결할 이유가 없습니다. – Mehrdad

+7

@Mehrdad : 절대적으로 *해야합니다. 인코딩 *은 문자열에서 바이트 배열로의 변환을 정의합니다. 압축과 암호화는 완전히 다른 문제입니다. 그렇지 않으면 파일 형식으로 사진을 저장하려고 할 때 이미지 형식이 중요하지 않다고 말하는 것과 같습니다. 많은 다른 이미지 형식은 괜찮을 수 있지만 정의 상 * 하나만 있어야합니다. –

+0

@JonSkeet : 그냥 'byte [] bytes = new byte [str.Length * sizeof (char)];라고 말할 수는 없습니까? Buffer.BlockCopy (str.ToCharArray(), 0, bytes, 0, bytes.Length)'? 인코딩이 무엇인지 신경 쓰는 사람 (또는 문자열에 유효한 문자가있는 경우), 역순으로 같은 형식으로 다시 가져올 수 있다는 것을 알고있는 한? – Mehrdad

관련 문제