ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Delphi中的字符串[三]——代码页

2021-09-16 22:36:30  阅读:161  来源: 互联网

标签:代码 s2 Delphi 字符串 type 936 s1


代码页即为字符集编码,也称为"内码表"。

在Unicode出现以前,计算机依靠不同的代码页来显示不同的语言。我们最常用的代码页有两个:936 简体中文和437 英文。

Delphi中可以为AnsiString指定代码页。

 

type
  TStr = type AnsiString(936);
var
  S: TStr;

 

 这样我们就定义了一个代码页是936的字符串S。

 

显然,同一个字码在不同的代码页中很可能代表不同的字符。来看下面这个例子:

type
  TStr1 = type AnsiString(437);
  TStr2 = type AnsiString(936);

var
  s1: TStr1;
  s2: TStr2;

begin
  s1:= '══';
  SetLength(s2,2);
  Move(s1[1],s2[1],2);
  writeln(s1);
  writeln(s2);
  readln;
end

首先分别定义了英文代码页和简体中文代码页的字符串。然后把字符串“══”赋给s1(这是连续两个双横表格框线“═”,字符编码205(十六进制$CD),并非等号“=”)。接着给s2设定两个字节的长度,把s1第一个字符开始的两个字节的数据拷贝给它。注意这里不能用s2:= s1。由于字符串本质上是指针,如果简单地使用赋值语句的话会让s2直接指向s1所指向的数据区,这时两个字符串就完全一样了。

显示结果:

 

 

s2变成了一个中文字符:屯。

这是因为437代码页中的连续两个单字节字符到了936代码页中被看作了一个双字节字符,而“屯”的字码正好是$CDCD。

用过Free Pascal的人对这个一定不会陌生。

 

标签:代码,s2,Delphi,字符串,type,936,s1
来源: https://www.cnblogs.com/Automated/p/15272631.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有