Browse Source

* the code page of unicodestring/widestring on big endian targets is
UTF-16BE, not UTF-16LE

git-svn-id: trunk@21255 -

Jonas Maebe 13 years ago
parent
commit
ab914a8ae3
2 changed files with 14 additions and 4 deletions
  1. 2 1
      compiler/globals.pas
  2. 12 3
      compiler/symdef.pas

+ 2 - 1
compiler/globals.pas

@@ -104,7 +104,8 @@ interface
 {$endif FPC_LITTLE_ENDIAN}
 {$endif FPC_LITTLE_ENDIAN}
 {$endif}
 {$endif}
        CP_UTF8 = 65001;
        CP_UTF8 = 65001;
-       CP_UTF16 = 1200;
+       CP_UTF16LE = 1200;
+       CP_UTF16BE = 1201;
        CP_NONE  = 65535;
        CP_NONE  = 65535;
 
 
 
 

+ 12 - 3
compiler/symdef.pas

@@ -1686,7 +1686,10 @@ implementation
       begin
       begin
          inherited create(stringdef);
          inherited create(stringdef);
          stringtype:=st_widestring;
          stringtype:=st_widestring;
-         encoding:=CP_UTF16;
+         if target_info.endian=endian_little then
+           encoding:=CP_UTF16LE
+         else
+           encoding:=CP_UTF16BE;
          len:=-1;
          len:=-1;
          savesize:=sizeof(pint);
          savesize:=sizeof(pint);
       end;
       end;
@@ -1696,7 +1699,10 @@ implementation
       begin
       begin
          inherited ppuload(stringdef,ppufile);
          inherited ppuload(stringdef,ppufile);
          stringtype:=st_widestring;
          stringtype:=st_widestring;
-         encoding:=CP_UTF16;
+         if target_info.endian=endian_little then
+           encoding:=CP_UTF16LE
+         else
+           encoding:=CP_UTF16BE;
          len:=ppufile.getaint;
          len:=ppufile.getaint;
          savesize:=sizeof(pint);
          savesize:=sizeof(pint);
       end;
       end;
@@ -1706,7 +1712,10 @@ implementation
       begin
       begin
          inherited create(stringdef);
          inherited create(stringdef);
          stringtype:=st_unicodestring;
          stringtype:=st_unicodestring;
-         encoding:=CP_UTF16;
+         if target_info.endian=endian_little then
+           encoding:=CP_UTF16LE
+         else
+           encoding:=CP_UTF16BE;
          len:=-1;
          len:=-1;
          savesize:=sizeof(pint);
          savesize:=sizeof(pint);
       end;
       end;