2012-09-23 3 views
0

나는 C#에서 Windows 양식 응용 프로그램을 작성하고 있습니다. 이 응용 프로그램은 사용자가 목록 상자에서 소스 코드 파일을 선택하고 ScintillaNET을 사용하여 색상 코드로 표시합니다. 파일은 데이터베이스의 바이트 배열로 저장됩니다. 하드 드라이브에있는 파일을 바이트 배열로 변환하고 저장하는 작업을했습니다. 사용자는 코드를 편집 한 다음 로컬 하드 드라이브에 파일을 다운로드하지 않고 데이터베이스에 저장할 수 있어야합니다. 어떻게 접근해야할지 모르겠습니다.ScintillaNET의 텍스트에 대한 바이트 배열

기본적으로 ScintillNET 컨트롤에서 텍스트를 저장하고 바이트 배열로 변환하려고합니다. 그리고 다른 방법으로 바이트 어레이를 가져 와서 ScintillaNET에 처음 등장한 텍스트를 인쇄하십시오.

답변

1

당신은 System.Text에서 "인코딩"클래스를 사용할 수 있습니다.

System.Text.Encoding.Unicode.GetBytes("Example"); 

이렇게하면 유니 코드 인코딩을 사용하여 "string"텍스트와 동일한 바이트가있는 바이트 배열이 반환됩니다. 사용할 수있는 다른 인코딩이 있지만 더 많은 문자 (예 : Windows charmap에서 찾을 수있는 모든 문자)를 지원하므로 유니 코드를 사용하는 것이 좋습니다. 필자의 경우 라틴어이고 특정 문자는 UTF에서 사용할 수 없기 때문에 아스키에 대한 의문점이 있습니다. 이제

문자열을 사용하여 바이트 배열로 변환하는 :

byte[] exampleByteArray = MemStream.ToArray(); 
System.Text.Encoding.Unicode.GetString(exampleByteArray); 

이 코드는 메모리 스트림에서 바이트 배열로 이전에 저장 한 문자열을 반환합니다. 바이트 배열을 다른 메서드로로드 할 수 있으며, 데이터베이스에서로드하고 System.Text.Encoding.Unicode.GetString()을 호출 할 수 있습니다.

+0

좋은 답변입니다. 그냥 경고, ScintillaNET 특정 인코딩이 필요할 수 있습니다. 확인해보십시오! –

1
난 당신이 System.Text.Encoding 네임 스페이스를 찾고 있습니다 생각

...

 // a sample string... 
     string example = "A string example..."; 

     // convert string to bytes 
     byte[] bytes = Encoding.UTF8.GetBytes(example); 

     // convert bytes to string 
     string str = System.Text.Encoding.UTF8.GetString(bytes);