procedure TForm1.Button1Click(Sender: TObject);
var ad:widechar; s:LPCSTR; s2:string;
begin
s2:='s多少付' ;
// s:= pchar(CP936ToUTF8(s2));
s:=pchar( UTF8ToCP936(s2));
showmessage(s);
MessageBox(0,PChar(UTF8ToAnsi('正常顯示中文')),'1',MB_OK or MB_ICONEXCLAMATION);
MessageBox(0,s,'1',0);
end;
https://blog.csdn.net/poolord/article/details/77488704
在Lazarus中對字元串進行代碼頁轉換
2017年08月22日 22:29:26 池龍 閱讀數 885更多 分類專欄: Delphi / Lazarus 版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。 本文連結: https://blog.csdn.net/poolord/article/details/77488704
由于Lazarus基于UTF-8,是以當讀寫Windows建立的純文字檔案的時候,由于其中的中文使用GBK(CP936)編碼,可能會出現錯誤。此時可使用Lazarus自帶的代碼頁轉換單元LConvEncoding對編碼進行轉換。
如UTF8和GBK互轉
- 1
- 2
如指定代碼頁之間互轉
function ConvertEncoding(const s, FromEncoding, ToEncoding: string
{$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean = false{$endif}): string;
- 1
- 2
- 3
注:GB18030由于包含部分四位元組字元,實際其代碼頁CP54936是不能使用的,但是由于GB18030向下相容目前中文Windows系統使用的GBK,而GBK又向下相容GB2312(CP20936),是以實際操作中按CP936處理即可。
轉載于:https://www.cnblogs.com/delphi-xe5/p/11556708.html
由于Lazarus基于UTF-8,是以當讀寫Windows建立的純文字檔案的時候,由于其中的中文使用GBK(CP936)編碼,可能會出現錯誤。此時可使用Lazarus自帶的代碼頁轉換單元LConvEncoding對編碼進行轉換。
如UTF8和GBK互轉
- 1
- 2
如指定代碼頁之間互轉
function ConvertEncoding(const s, FromEncoding, ToEncoding: string
{$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean = false{$endif}): string;
- 1
- 2
- 3
注:GB18030由于包含部分四位元組字元,實際其代碼頁CP54936是不能使用的,但是由于GB18030向下相容目前中文Windows系統使用的GBK,而GBK又向下相容GB2312(CP20936),是以實際操作中按CP936處理即可。