精华内容
下载资源
问答
  • servlet中文乱码问题

    2019-09-25 01:41:10
    通过response对象向页面输出内容时遇到的...charset=UTF-8"来制定浏览器打开页面时用的编码,并在写入时通过相应编码传入字符串的字节数组,如 通过"中文".getBytes("UTF-8")获取中文部分UTF-8编码字节数组...

        

    通过response对象向页面输出内容时遇到的乱码问题可分为两种情况

      1.字节流

        字节流输出时可以通过设置响应头"Content-Type"的值为"text/html;charset=UTF-8"来制定浏览器打开页面时用的编码,并在写入时通过相应编码传入字符串的字节数组,如 通过"中文".getBytes("UTF-8")获取中文部分的UTF-8编码的字节数组。

      2.字符流

        response字符流对象中存在一个缓冲区,用来将字符串转换为指定编码的字节数组,默认情况下response缓冲区的编码默认值是ISO-8859-1,因此如不加以设定,中文内容必定会呈现乱码。可以通过response.setCharacterEncoding("UTF-8")方法来设置缓冲区的编码,再通过response.setHeader("Content-Type", "text/html;charset=UTF-8");将浏览器打开页面的编码设置为与缓冲区编码相同,为了简化书写,java提供了response.setContentType("text/html;charset=UTF-8");方法代替上述两步操作。

    通过request对象从请求中读取内容时遇到的乱码问题也可分为两种情况

      1.POST方式

        POST方式下,存在一个缓冲区,用来将请求体中的内容由字节流通过指定编码解码为字符流,默认情况下缓冲区的默认编码为ISO-8859-1,要解决乱码问题,只需通过request.setCharacterEncoding("utf-8"); 方法将缓冲区编码指定为UTF-8即可。

      2.GET方式

        由于在GET方式下,需要传递的内容直接存在于请求头的url后,数据的编码一般为UTF-8,而url的默认编码为ISO-8859-1,一般来说有三种方式可以解决中文乱码问题。

        (修改配置文件中uri的编码方式)

        解决方案一:修改tomcat/conf/server.xml 

            <Connector port="80" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" URIEncoding="utf-8"/>

        (获取乱码内容后通过ISO-8859-1编码表反向查出原始数据,再通过UTF-8码表查出正确内容)

        解决方案二:逆向编解码
            username = URLEncoder.encode(username, "ISO8859-1");
            username = URLDecoder.decode(username, "utf-8");

        解决方案三:简写的方式(推荐使用)
            username = new String(username.getBytes("ISO-8859-1"),"utf-8");

    转载于:https://www.cnblogs.com/RedHatPhenix/p/5588629.html

    展开全文
  • 但是我们最先接触的是str函数,所以不可避免在工作中会优先使用str函数,但是仔细研究就会发现大部分str函数操作的是字节数组,虽然字符串也是由多个字节组成的字节数组,但是对于多个字节的字符,在处理上却不是很...

    我们知道在PHP中有两大类函数用来处理字符串的
    1、str开头的
    2、mb开头的函数

    我们最先接触的是str函数,所以不可避免在工作中会优先使用str函数,但是仔细研究就会发现大部分str函数操作的是字节数组,虽然字符串也是由多个字节组成的字节数组,但是对于多字节的字符,在处理上却不是很好。

    // utf-8编码
    $string = 'rxy中国';
    

    1、strlen — 获取字符串长度
    实际上这个描述是错的,因为官方有一个提示

    Note:
    strlen() returns the number of bytes rather than the number of characters in a string.
    

    所以strlen的真正描述是:获取字符串的字节长度。

    echo strlen($string); // 9
    

    在unicode字符集中utf-8编码规则下,一个中文占三个字节。

    2、substr — 返回字符串的子串
    它的真实含义是截取字符串对应的字节数组。

    echo substr($string, 0, 4); // rxy�
    

    因为在unicode字符集中找不到对应的字符,所以操作系统也就无法正常显示。

    3、访问指定位上的字符
    既然字符串是一个字节数组,那么也就可以以数组的方式访问某个字节元素了。

    echo $string[0]; // r
    echo $string[3]; // �
    echo $string[4]; // �
    echo $string[5]; // �
    echo $string[3] . $string[4] . $string[5]; // 中
    

    由以上三个例子可以看出,str系列函数是偏向于字节数组的操作,而不适合我们常用的场景,当然str还有一些函数就不存在这样的情况,比如

    str_replace — 子字符串替换
    单纯的匹配和替换,不用关心某个字符是不是多字节字符,因此不受影响。
    

    以上列出的只是小部分函数,其他的str函数,根据其定义就可以判断出是否适合使用。

    相比之下mb函数则更适合用作字符串处理。它使用unicode字符集为基准,以utf-8编码作为规则来处理字符串。

    针对上面的问题,采用mb函数来处理:

    //获取字符串长度
    echo mb_strlen($string); // 5
    //截取字符串
    echo mb_substr($string, 0, 4); // rxy中
    //获取指定位置上的字符
    echo mb_substr($string, 0, 1) // r
    echo mb_substr($string, 3, 1) // 中
    
    展开全文
  • bitmap2Byte : bitmap转字节数组 byte2Bitmap : 字节数组转bitmap bitmap2String : 把bitmap转换成Base64编码String drawable2Bitmap : Drawable转Bitmap bitmap2Drawable : Bitmap转Drawable inputStream2Byte : ...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    8、修正“编码_Utf8到Unicode”频繁操作导致内存泄漏的BUG,感谢易友【◆野蛮vE儿】反馈。 9、修正“目录_是否存在”,当存在无反缀文件时返回真的BUG,感谢易友【@飞灵】反馈。 10、新增“系统_信息框Ex”定时信息...
  • C#全能速查宝典

    热门讨论 2014-04-26 16:16:27
    2.1.19 MdiChildren属性——获取子窗体的数组 146 2.1.20 MdiParent属性——设置父窗体 147 2.1.21 MinimizeBox属性——是否显示最小化按钮 147 2.1.22 Minimum属性——数字显示框的最小值 148 2.1.23 Opacity属性...
  • 实例134 获取数组当前的键名和值 162 实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168...
  • 实例134 获取数组当前的键名和值 162 实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168...
  • 1.修复“编码_Unicode到Utf8”,感谢 90后辉煌 的提醒 2.修复“系统_取宽带用户名密码”因 编码_Unicode到Utf8 有问题导致的问题 感谢 wjjucwj 的提醒 注:ADSL拨号类的<取宽带用户名密码>也是调用这个命令 代码...
  • //处理源码筛选字符串,只获取含有问题标题的内容 // System.out.println(queStr);//测试标题部分字符串 String[] queArr = queStr.split("(||)"); for(int i=0;i;i++){ String msg = queArr[i]; msg = msg....
  • Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的...保存、如何从文件中得到公钥编码字节数组、如何从字节数组解码公钥...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节...保存、如何从文件中得到公钥编码字节数组、如何从字节数组解码公钥...
  • 全书压缩打包成3部分,这是第2部分 内容简介  《ASP.NET开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年...
  • 全书压缩打包成3部分,这是第1部分 内容简介  《ASP.NET开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年...
  • 全书压缩打包成3部分,这是第3部分 内容简介  《ASP.NET开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年...
  • * 拆分之后的数组元素与模板中的标识符对应关系 array[0]:timetop array[1]:info array[2]:idea * array[3]:advice array[4]:infosend */ String array[] = content.split("~"); // 2008年11月27日:更新...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    72 <br>0102 将字符串首字母转换大写 72 <br>0103 如何进行字节数组和字符串的相互转换 72 <br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 <br>4.2 获取字符串信息 73 ...
  • 取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01):  增加...
  • linenoise-ng:用于Linux、Windows和MacOS的小型便携式GNU readline替换,它能够处理UTF-8字符。 Lyra:易于使用的、可组合的命令行解析器,适用于C++11及更高版本。 Ncurses:终端用户界面。 PDCurses:具有源...
  • MYSQL中文手册

    2013-03-11 21:21:34
    10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 ...
  • 10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. ...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

获取字节数组utf8编码部分