我有一段文本需要存储在widestring
变量中,但我的文本是UTF8编码的,而widestring不支持UTF8并将其转换为一些中文字符。
那么是否有UTF8版本的WIDESTRING呢?
我通常使用UTF8string
,但在这种情况下我必须使用WideString
。
我有一段文本需要存储在widestring
变量中,但我的文本是UTF8编码的,而widestring不支持UTF8并将其转换为一些中文字符。
那么是否有UTF8版本的WIDESTRING呢?
我通常使用UTF8string
,但在这种情况下我必须使用WideString
。
UTF8String
变量赋值给WideString
变量时,编译器会自动插入解码字符串的指令(在Delphi 2009及更高版本中)。它将UTF-8转换为WideString
所保存的UTF-16格式。如果你的WideString
变量保存了中文字符,那么这是因为你的UTF-8编码的字符串包含了UTF-8编码的中文字符。ws
保存UTF8String
s
中字节的16位版本,那么你可以通过一些类型转换来绕过自动转换。var
ws: WideString;
i: Integer;
c: AnsiChar;
SetLength(ws, Length(s));
for i := 1 to Length(s) do begin
c := s[i];
ws[i] := WideChar(Ord(c));
end;
ws := Utf8Decode(s);