这种转换一般用于网页地址; 我不知道 Delphi 是不是有现成的函数, 用到了就写了一个.


//函数:
function ToUTF8Encode(str: string): string;
var
  b: Byte;
begin
  for b in BytesOf(UTF8Encode(str)) do
    Result := Format('%s%%%.2x', [Result, b]);
end; //测试:
var
  str: string;
begin
  str := '大雄';
  str := ToUTF8Encode(str);
  ShowMessage(str); //%E4%B8%87%E4%B8%80
end;

为 "小月124" 写了个反向函数:


function ToUTF8Decode(const str: string): string;
var
  List: TStrings;
  tmpStr: AnsiString;
  i: Integer;
begin
  List := TStringList.Create;
  ExtractStrings(['%'], ['%'], PChar(str), List);
  SetLength(tmpStr, List.Count);
  for i := to List.Count - do
    Byte(tmpStr[i+]) := StrToInt('$' + List[i]);
  List.Free;
  Result := UTF8Decode(tmpStr);
end; { 调用测试 }
procedure TForm1.FormCreate(Sender: TObject);
var
  s1: AnsiString;
  s2: WideString;
begin
  s1 := '%E4%B8%87%E4%B8%80';
  s2 := ToUTF8Decode(s1);
  ShowMessage(s2); { 大雄 }
end;

XE3随笔16:将字符串转换成 UTF8 编码的函数的更多相关文章

  1. LoadRunner 如何将英文的字符串转换成UTF-8格式的字符串?

    7.48  如何手动转换字符串编码 1.问题提出 如何将英文的字符串转换成UTF-8格式的字符串? 2.问题解答 可以使用lr_convert_string_encoding函数将字符串从一种编码手动 ...

  2. Linux中将一个GBK编码的文件转换成UTF-8编码文件

    Linux中将一个GBK编码的文件转换成UTF-8编码文件 使用iconv 命令iconv -f GBK -t UTF-8 file1 -o file2 输出另一个文件,然后再覆盖源文件内容

  3. 算法练习-字符串转换成整数(实现atoi函数)

    练习问题来源 https://leetcode.com/problems/string-to-integer-atoi/ https://wizardforcel.gitbooks.io/the-ar ...

  4. 将NSString转换成UTF8编码的NSString

    在使用网络地址时,一般要先将url进行encode成UTF8格式的编码,否则在使用时可能报告网址不存在的错误,这时就需要进行转换 下面就是转换函数: NSString *urlString= [NSS ...

  5. iOS-将NSString转换成UTF8编码的NSString

    在使用网络地址时,一般要先将url进行encode成UTF8格式的编码,否则在使用时可能报告网址不存在的错误,这时就需要进行转换 下面就是转换函数: NSString *urlString= [NSS ...

  6. 将gbk字符串转换成utf-8,存储到注册表中后,再次从注册表读取转换成gbk,有问题!!!

    char *a = "新2新"; printf("gbk:'%s'\n", a); int ii; ; ii < strlen(a); ii++) { p ...

  7. C#将字符转换成utf8编码 GB321编码转换

    public static string get_uft8(string unicodeString) { UTF8Encoding utf8 = new UTF8Encoding(); Byte[] ...

  8. Python遍历路径下文件并转换成UTF-8编码

    http://www.cnblogs.com/wuyuegb2312/archive/2013/01/11/2856772.html 开始学Python,这篇文章来自于应用需求. os.walk很方便 ...

  9. java 把URL中的中文转换成utf-8编码

    private static final String QUERY = "餐饮"; String sr = URLEncoder.encode(QUERY); System.out ...

随机推荐

  1. prop和attr的区别

    在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于 ...

  2. UNIX网络编程——getsockname和getpeername函数

    UNIX网络编程--getsockname和getpeername函数   来源:网络转载   http://www.educity.cn/linux/1241293.html     这两个函数或者 ...

  3. JavaScript如何检查网站是可以访问

    <html><head><title>JavaScript如何检查网站是可以访问</title> <script> //JavaScript ...

  4. js计时事件

    通过在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行,我们称之为计时事件. 1. setTimeout()--暂停指定的时间后执行指定的代码 clearTimeout ()--停止se ...

  5. Elasticsearch升级1.5版本暴露jdk的bug

    把测试环境的Elasticsearch升级到1.5.1版本,启动的时候报错: [root@node2 elasticsearch-1.5.1]# bin/service/elasticsearch s ...

  6. web初学之JavaBean

    JavaBean 1.javaBean类:特殊的java类,以封装和重用为目的.通常JavaBean与Jsp搭配使用构成JavaBean技术. (1)JavaBean的规范: ●JavaBean是个公 ...

  7. vim编辑器详解

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率. vi是“visual interface”的 ...

  8. Opencl 并行求和

    上周尝试用opencl求极大值,在网上查到大多是求和,所谓的reduction算法.不过思路是一样的. CPP: ; unsigned ; ; ; int nGroup = nGroupSize / ...

  9. spring整合freemarker

    一.配置maven <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  10. 关于checkbox复选框

    1.复选框后面为什么会有间距,如图 首先这肯定不是空格.实际上是这样的,在Firefox,chrome,Safari等现代浏览器下复选框与文字的间隔确实是由margin引起的,也就是默认情况下,che ...