2009-09-23 2 views
1

텍스트 파일에서 richedit으로 텍스트를로드하고 있는데 이상한 중국어 기호가 대신 표시됩니다. 무엇이 잘못 되었습니까? 때문에 질문에 대한 코멘트, 7중국어 기호 Loading text When

RichEdit의이 MS에서 제공하고 Windows와 함께 패키지되어 richedit.dll에 기반 델파이 특히 힌트에

내 대답을 개정
ms := TMemoryStream.Create; 
ms.LoadFromFile('C:\aw.txt'); 
ms.Seek(0, soFromEnd); 
zChar:=#0; 
ms.Write(zChar, 1); 
ms.Seek(0, soFromBeginning); 
RichEdit1.SetSelTextBuf(ms.Memory); 
ms.free; 
+1

어떤 버전 :

RichEdit1.Lines.LoadFromFile('c:\test.txt', TEncoding.ASCII); 

이이 페이지에서보세요처럼이 있을까? 텍스트 파일의 인코딩은 무엇입니까? –

+0

Windows를 통해 새로 생성 된 txt 파일입니다. Delphi 7 – Tom

+0

메모장을 사용하는 경우 UTF8이 아닌 ASCII 인코딩으로 저장하십시오. –

답변

3

편집. Windows ME 이후에는 UNICODE를 사용할 수 있습니다. 따라서 파일의 처음 2 문자를 BOF로 해석하는 문자 세트를 가져옵니다. 문자가 잘못 해석되어 ASCII 또는 ANSI 파일에서 BOF로 사용되는 경우가 있습니다 (호환성 이유로 BOF가 표시되지 않음). 이것은 write.exe에서도 볼 수 있습니다.

파일을 메모장에 저장할 때 올바른 인코딩을 사용하고 있는지 확인하십시오. 파일에 인코딩 (바이너리 뷰어의 처음 두 바이트보기)이없는 경우 가능한 경우 앞에 두 칸을 추가하여 문제가 지속되는지 확인하십시오.

내가 텍스트 파일 만 인코딩을하지 않는 것을 말한다 실제로 것 : 델파이 2009까지 업그레이드 할 때

2009 델파이 2010

나는 사람들을 돕기 위해 내 첫 번째 대답을 떠나 순수 ASCII 또는 ANSI이고 UNICODE를 사용하는 Delphi 2009 또는 2010을 사용하고 있습니다. 처음 두 문자는 BOF (UNICODE 인코딩이 사용되는 프로그램에 알려주는)로 사용됩니다. 이것이 올바른 BOF 일 경우 어쩌면 잘못된 인코딩이 적용됩니다.

TMemoryStream은 인코딩 시행을 허용하지 않습니다.

LoadFromFile 메서드에 새로운 TEncoding 매개 변수가있는 TString을 사용할 수 있습니다. 델파이의 http://edn.embarcadero.com/article/38693

+0

거기에 아무런 표시가 없으면 처음 두 문자 이상입니다. 따라서 "부시 대통령은 파일을 메모장에 숨겼다"라는 인기를 모으기 시작했고, 그것을 다시 읽을 때 횡설수설적인 중국어가 나옵니다. (실제로 단어는 중요하지 않습니다. 단어의 길이입니다.) –

+0

"Old New Thing": "메모장 파일 인코딩 문제, redux"- http://blogs.msdn.com/oldnewthing/archive /2007/04/17/2158334.aspx 기본적으로 수정할 수없는 문제입니다. –