首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 字符與字符串詳解(六):Char、WideChar 與編碼互轉

     編輯:Delphi

字符類型與編碼值雙向轉換完全指南

本文詳細介紹 Char/AnsiChar (1 字節) 和 WideChar (2 字節) 與其編碼值 (整數) 之間的相互轉換方法。

Char/AnsiChar 與編碼轉換

var
  b: Byte;
  c: Char;
begin
  // 字符 → 編碼 (多種等效寫法)
  b := Ord('A');       // 65
  b := Ord(#65);       // 65
  b := Ord($41);       // 65
  b := Ord(#$41);      // 65
  b := Byte('A');      // 65
  b := Byte(#65);      // 65
  b := Byte($41);      // 65
  b := Byte(#$41);     // 65
  
  // 編碼 → 字符 (多種等效寫法)
  c := Chr(65);        // 'A'
  c := Chr($41);       // 'A'
  c := Char(65);       // 'A'
  c := Char($41);      // 'A'
end;

關鍵點:

  • Ord 返回字符的序數值 (0-255)
  • Byte() 類型轉換同樣有效
  • Chr 函數將整數轉為字符
  • Char() 類型轉換同樣有效
  • #65 十進制字符常量,#$41 十六進制字符常量
  • Length(c) 永遠為 1,SizeOf(c) 為 1 字節

WideChar 與 Unicode 編碼轉換

var
  w: Word;
  c: WideChar;
  ws: WideString;
  s: string;
begin
  // 準備:獲取一個漢字
  ws := '萬一';
  c := ws[1];  // '萬'
  
  // 漢字 → Unicode 編碼
  w := Ord(c);                    // 19975 (十進制)
  w := Word(c);                   // 19975
  s := Format('%.4x', [Ord(c)]);  // '4E07' (十六進制字符串)
  s := IntToHex(Ord(c), 4);       // '4E07'
  
  // Unicode 編碼 → 漢字
  c := #19975;      // '萬'
  c := #$4E07;      // '萬'
  c := #$4e07;      // '萬' (大小寫不敏感)
  c := WideChar(19975);  // '萬'
  c := WideChar($4E07);  // '萬'
end;

WideChar 關鍵特性

  • 佔用 2 字節 (SizeOf(WideChar) = 2)
  • 取值範圍 #0..#65535 (#$0..#$FFFF)
  • 兼容 ANSI 字符 (#0..#255)
  • 漢字 Unicode 範圍:$4E00..$9FA5 (常用漢字)
  • Length(c) 返回字符數 (1),SizeOf(c) 返回字節數 (2)

賦值技巧與注意事項


// 直接賦值 ANSI 字符 (≤#255)
c := 'B';  // 正常

// 直接賦值漢字字面量 (編譯器版本相關)
// c := '萬';  // 舊版 Delphi 不支持,D2009+ 支持

// 變通方案:從 WideString 取字符
c := WideString('萬')[1];  // '萬'

// 組合顯示多個 Unicode 字符
ShowMessage(#19975#19968);      // '萬一'
ShowMessage(#19975 + #19968);   // '萬一' (+ 號連接字符常量)
ShowMessage(#$4e07#$4e00);      // '萬一'

最佳實踐總結

操作推薦方式備註
字符→編碼Ord(c) 或 Word(c)統一使用 Ord
編碼→字符Chr(n) 或 Char(n)Chr 更語義化
十六進制顯示IntToHex(Ord(c), 4)固定 4 位
漢字字面量WideString('漢')[1]跨版本兼容

掌握這些轉換技巧,對處理文本編碼、串口通訊、文件解析、API 調用等場景至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved