MessageBox中文亂碼解決方法

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);markdown

end; ide

 

https://blog.csdn.net/poolord/article/details/77488704

在Lazarus中對字符串進行代碼頁轉換

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。
本文連接: https://blog.csdn.net/poolord/article/details/77488704

因爲Lazarus基於UTF-8,所以當讀寫Windows創建的純文本文件的時候,因爲其中的中文使用GBK(CP936)編碼,可能會出現錯誤。此時可以使用Lazarus自帶的代碼頁轉換單元LConvEncoding對編碼進行轉換。編碼

如UTF8和GBK互轉spa

function CP936ToUTF8(const s: string): string; // Chinese function UTF8ToCP936(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Chinese, essentially the same as GB 2312 and a predecessor to GB 18030
  • 1
  • 2

如指定代碼頁之間互轉.net

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處理便可。code

相關文章
相關標籤/搜索