php中截取汉字,避免半个字节的问题

1. $In 要截取的字符串, $num要截取的长度, 返回截取的字符串
public function substrGB($in,$num)
    {
      //$num=16;
      $pos=0;
      $byteNum=0;
      $out="";
      while($num){
   
    $c=mb_substr($in,$pos,1,"EUC-JP");
    if($c=="n") break;
    if(strlen($c)==1){
      $pos++;
      $byteNum++;
      if($byteNum>$num) break;
      $out.=$c;                       
    }
    else
      {
        $pos++;
        $byteNum=$byteNum+2;
        if($byteNum>$num) break;
        $out.=$c;                  
      }
      }
      return $out;
    } 

时间: 2024-11-05 21:44:04

php中截取汉字,避免半个字节的问题的相关文章

sap中一个汉字占几个字节

问题描述 字符集是unicode,表中一个字段定义为char(8),这时候能最多能输几个汉字? 解决方案 解决方案二:即然是unicode,肯定是8个啦,不过,实际长度还是两个字节的,取字符长度是1在数据库端(oracle/sqlserver),实际长度是char(16),你可以看一下解决方案三:谢谢了,我是初学者,只能在sqlserver中去查看实际长度char(16)?在sap中不能看吧?解决方案四:可以的,SE11双击表格字段名,可以看到实际长度的,即Internalformat,试一下?

java中一个汉字和一个字母所占内存字节比较以及后台验证的减半处理

  基本概念 我们一般理解java中 一个字符char占2个字节byte 一个汉字占2个字节byte 一个字母占1个字节byte   其他情况 对于汉字来说,采用gbk编码占两字节,采用utf8编码占三个字节.   String的length()方法 String s1 = "aa"; String s2 = "a好"; s1.length() s2.length() 答案都是2,因为该方法是返回字符的个数,并不是内存中的字节数.   数据库应用 java的编码不会

c#-android接收PC端用C#程序发来的字节数组中的汉字怎么还原

问题描述 android接收PC端用C#程序发来的字节数组中的汉字怎么还原 现在PC端用C#写了一个程序向Android端发送数据(字节数组),发送的数据中有汉字,Android端接收后怎么还原??? 解决方案 要看什么编码,比如说 String s = new String(字节数组,"UTF-8");

在PHP的图形函数中显示汉字

函数|汉字|图形|显示 如何在PHP图形函数中显示汉字,大家已经问了很久了,但一直没有结果.终于在参考另一篇文章后,我试验出来了! 方法: 首先,决定要显示哪些汉字,如"计数器"这三个字. 到Word2000(97不知可不可以)中去,输入这三个字,另存为,选择编码格式,然后再在右边的编码类型里选择unicode utf-8,记住不要选错了.存成一个编码格式的文本文件,比如说文件名叫test.txt. 用一个16进制的编辑器打开这个文件,这时你会看到,里面有一堆16进制字符,一个汉字占三

如何PHP的图形函数中显示汉字。

函数|汉字|图形|显示 <?php/****************************** 如何在PHP图形函数中显示汉字,大家已经问了很久了,但一直没有结果.终于在参考另一篇文章后,我试验出来了!方法: 首先,决定要显示哪些汉字,如"计数器"这三个字. 到Word2000(97不知可不可以)中去,输入这三个字,另存为,选择编码格式,然后再在右边的编码类型里选择unicode utf-8,记住不要选错了.存成一个编码格式的文本文件,比如说文件名叫test.txt. 用一个1

汉字得出对应的拼音;通过拼音查找map中的汉字,逆向map多个装成list

需要用到Pingyin4j.jar import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; im

php中处理汉字字符串长度:strlen和mb_strlen

本文转自IT摆渡网欢迎转载,请标明出处 更多php文章请阅读 php问题解决 如这个例子: <html> <meta charset="utf-8"> <body> <?php $name="鸣人"; print "姓名的长度为:".strlen($name); ?> </body> </html> 这个代码的输出结果是:姓名的长度为:6 先探讨一下为什么会出现这个问题:PH

ORACLE数据库汉字占几个字节问题

一同事由于系 统需求关系,将SQL SERVER数据库的一个表导入ORACLE数据库时,发现居然报错:ORA-12899: value too large for column xxxx (actual:56, maximum:50),该字段长度在两个数据库都是50,之所以出现这个错误,原因无外乎两个: 一:因为ORACLE数据库它可以存储字节或字符,例如 CHAR(12 BYTE) CHAR(12 CHAR)的意义是不同的.一般来说默认是存储字节,你可以查看数据库参数NLS_LENGTH_SE

在PHP的图形函数中显示汉字_php基础

如何在PHP图形函数中显示汉字,大家已经问了很久了,但一直没有结果.终于在参考另一篇文章后,我试验出来了! 方法: 首先,决定要显示哪些汉字,如"计数器"这三个字. 到Word2000(97不知可不可以)中去,输入这三个字,另存为,选择编码格式,然后再在右边的编码类型里选择unicode utf-8,记住不要选错了.存成一个编码格式的文本文件,比如说文件名叫test.txt. 用一个16进制的编辑器打开这个文件,这时你会看到,里面有一堆16进制字符,一个汉字占三个字节,所以这里,你应该