我要判断一个字符串中是否有乱码?

解决方案 »

  1.   

    看看汉字的内码与acsII的区别,然后。
      

  2.   

    用ord(每个字符),如果该值在0-128之间是英文,在128-256之间是半个汉字,
    在0-128之间还有一些其他字符
      

  3.   

    用ord(每个字符),如果该值在0-128之间可能是英文,在128-256之间是半个汉字,
    procedure JudgeChar(AChar: Char);
    begin
    if (AChar in ['a'..'z']) or (Char in ['A'..'Z']) then
      ShowMessage('这是一个字符')
    else if (ord(AChar) in [128..256]) then
      ShowMessage('这是一个汉字的ASCII码')
    else
      ShowMessage('其他字符');
    end;
      

  4.   

    乱码取决于编码格式的,西欧国家的编码用中文看会有乱码(好比Tom's 那个"'"标点);
      

  5.   

    这样还是不能判断一个字符串,是否含有乱码阿,一个一个字节的判断ord()的范围为0-128, 128-256不是已经包括所有的可能了吗?
      我的目的是判断一个字符串变量的值是否含有乱码,如果有则把该字符串变量赋为默认值
    现在还不知道怎么做? 我猜想winamp中就可能这么做了。
      

  6.   

    IsDBCSLeadByte(byte(str[i]))
    返回值为true为汉字头,false为英文字母
      

  7.   

    判断一个字符串变量的值是否含有乱码for i:= 1 to length(yourstring) do
    begin
      if (ord(yourstring[i])>256 or ord(yourstring[i])<0)then
        yourstring:='asdasdasd';
    end;楼主是这个意思吗?
      

  8.   

    sorry 加上 break;for i:= 1 to length(yourstring) do
    begin
      if (ord(yourstring[i])>256 or ord(yourstring[i])<0)then
        begin
          break;
          yourstring:='asdasdasd';
        end;
    end;
      

  9.   

    sorry  break加翻了;for i:= 1 to length(yourstring) do
    begin
      if (ord(yourstring[i])>256 or ord(yourstring[i])<0)then
        begin      
          yourstring:='asdasdasd';
          break;
        end;
    end;哈哈哈哈哈哈哈,不好意思,喝多了
      

  10.   

    ord(字符)会>256或者小于0吗,我没试过 不过我猜想不会吧,一个字符只有8位阿
    回去试试。
      

  11.   

    zhrubin(碧涛)君 进入小类比如‘delph——》基础类’后才可以发帖的 按钮就在那几个大大的红字 比如‘Delphi 基础类 ’上面一行,依次为:
      刷新| 搜索 | 提问| 未解决 | 已解决 | 精华区 | FAQ | 专题 | 
      

  12.   

    告诉你一个非常有用的函数。bytetype 它可以判断一个字符串中,某个 Char 是单个字母,还是双字节的前一位或后一位。mbSingleByte 单字母mbLeadByte 双字节第一位mbTrailByte 双字节第二位