2012-10-15 2 views
1

저는 델파이 7을 사용하고 있습니다. 사용자로부터 정보를 얻는 프로그램을 만들었고 여러 편집 상자와 메모의 정보와 메모의 다른 입력 구성 요소를 결합했습니다. 이 메모를 UTF8 텍스트 파일로 저장하려면 어떻게해야합니까? utf 문제에 대한 해결책이없는 마지막 프로그램의 사용자로부터 일부 파일을 받았습니다. 출력 파일을 열면, ???? (아시다시피!) 다른 언어 문자 대신에 이것들은 복구 할 수 없습니다, 그렇습니까? 이처럼Memo 또는 RichEdit을 UTF8 텍스트 파일로 저장하는 방법은 무엇입니까?

+1

델파이 7 GUI는 기본 ANSI입니다. 따라서 모든 컨트롤의 문자 집합을 올바르게 설정하고 UTF8Encode 및 UTF8Decode를 사용하여 해당 컨트롤과 파일 데이터를 연결해야합니다. ANSI 만 지원되므로 단일 컨트롤에 여러 문자 집합을 사용할 수 없습니다. – Jay

답변

8

:

const 
    UTF8BOM: array[0..2] of Byte = ($EF, $BB, $BF); 
var 
    UTF8Str: UTF8String; 
    FS: TFileStream; 
begin 
    UTF8Str := UTF8Encode(Memo1.Text); 

    FS := TFileStream.Create('C:\path to\file.txt', fmCreate); 
    try 
    FS.WriteBuffer(UTF8BOM[0], SizeOf(UTF8BOM)); 
    FS.WriteBuffer(PAnsiChar(UTF8Str)^, Length(UTF8Str)); 
    finally 
    FS.Free; 
    end; 
end; 
관련 문제