当前位置: 首页 > news >正文

站长工具高清吗网络营销的基本职能有哪些

站长工具高清吗,网络营销的基本职能有哪些,网页美工设计图,软件开发好学吗编码解码 1#xff1a;I/O操作 2#xff1a;内存 3#xff1a;数据库 4#xff1a;javaWeb 下面主要介绍前面两种场景#xff0c;数据库部分只要设置正确编码格式就不会有什么问题#xff0c;javaWeb场景过多需要了解URL、get、POST的编码#xff0c;servlet的解码… 编码解码 1I/O操作 2内存 3数据库 4javaWeb 下面主要介绍前面两种场景数据库部分只要设置正确编码格式就不会有什么问题javaWeb场景过多需要了解URL、get、POST的编码servlet的解码所以javaWeb场景下节LZ介绍。 I/O操作在前面LZ就提过乱码问题无非就是转码过程中编码格式的不统一产生的比如编码时采用UTF-8解码采用GBK但最根本的原因是字符到字节或者字节到字符的转换出问题了而这中情况的转换最主要的场景就是I/O操作的时候。当然I/O操作主要包括网络I/O也就是javaWeb和磁盘I/O。网络I/O下节介绍。 首先我们先看I/O的编码操作。InputStream为字节输入流的所有类的超类Reader为读取字符流的抽象类。java读取文件的方式分为按字节流读取和按字符流读取其中InputStream、Reader是这两种读取方式的超类。 按字节 我们一般都是使用InputStream.read()方法在数据流中读取字节read()每次都只读取一个字节效率非常慢我们一般都是使用read(byte[])然后保存在一个byte[]数组中最后转换为String。在我们读取文件时读取字节的编码取决于文件所使用的编码格式而在转换为String过程中也会涉及到编码的问题如果两者之间的编码格式不同可能会出现问题。例如存在一个问题test.txt编码格式为UTF-8那么通过字节流读取文件时所获得的数据流编码格式就是UTF-8而我们在转化成String过程中如果不指定编码格式则默认使用系统编码格式GBK来解码操作由于两者编码格式不一致那么在构造String过程肯定会产生乱码如下 File file new File(C:\\test.txt);InputStream input new FileInputStream(file);StringBuffer buffer new StringBuffer();byte[] bytes new byte[1024];for(int n ; (n input.read(bytes))!-1 ; ){buffer.append(new String(bytes,0,n));}System.out.println(buffer); 输出结果锘挎垜鏄?cm test.txt中的内容为我是 cm。 要想不出现乱码在构造String过程中指定编码格式使得编码解码时两者编码格式保持一致即可 buffer.append(new String(bytes,0,n,UTF-8)); 按字符 其实字符流可以看做是一种包装流它的底层还是采用字节流来读取字节然后它使用指定的编码方式将读取字节解码为字符。在java中Reader是读取字符流的超类。所以从底层上来看按字节读取文件和按字符读取没什么区别。在读取的时候字符读取每次是读取留个字节字节流每次读取一个字节。 字节字符转换 字节转换为字符一定少不了InputStreamReader。API解释如下InputStreamReader 是字节流通向字符流的桥梁它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定或者可以接受平台默认的字符集。 每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换可以提前从底层流读取更多的字节使其超过满足当前读取操作所需的字节。API解释非常清楚InputStreamReader在底层读取文件时仍然采用字节读取读取字节后它需要根据一个指定的编码格式来解析为字符如果没有指定编码格式则采用系统默认编码格式。 String file C:\\test.txt; String charset UTF-8; // 写字符换转成字节流FileOutputStream outputStream new FileOutputStream(file); OutputStreamWriter writer new OutputStreamWriter(outputStream, charset); try { writer.write(我是 cm); } finally { writer.close(); } // 读取字节转换成字符FileInputStream inputStream new FileInputStream(file); InputStreamReader reader new InputStreamReader( inputStream, charset); StringBuffer buffer new StringBuffer(); char[] buf new char[64]; int count 0; try { while ((count reader.read(buf)) ! -1) { buffer.append(buf, 0, count); } } finally { reader.close(); }System.out.println(buffer); 内存首先我们看下面这段简单的代码 String s 我是 cm; byte[] bytes s.getBytes(); String s1 new String(bytes,GBK); String s2 new String(bytes); 在这段代码中我们看到了三处编码转换过程一次编码两次解码。先看String.getTytes(): public byte[] getBytes() {return StringCoding.encode(value, 0, value.length);} 内部调用StringCoding.encode()方法操作 static byte[] encode(char[] ca, int off, int len) {String csn Charset.defaultCharset().name();try {// use charset name encode() variant which provides caching.return encode(csn, ca, off, len);} catch (UnsupportedEncodingException x) {warnUnsupportedCharset(csn);}try {return encode(ISO-8859-1, ca, off, len);} catch (UnsupportedEncodingException x) {// If this code is hit during VM initialization, MessageUtils is// the only way we will be able to get any kind of error message.MessageUtils.err(ISO-8859-1 charset not available: x.toString());// If we can not find ISO-8859-1 (a required encoding) then things// are seriously wrong with the installation.System.exit(1);return null;}} encode(char[] paramArrayOfChar, int paramInt1, int paramInt2)方法首先调用系统的默认编码格式如果没有指定编码格式则默认使用ISO-8859-1编码格式进行编码操作进一步深入如下 String csn (charsetName null) ? ISO-8859-1 : charsetName; 同样的方法可以看到new String 的构造函数内部是调用StringCoding.decode()方法 public String(byte bytes[], int offset, int length, Charset charset) {if (charset null)throw new NullPointerException(charset);checkBounds(bytes, offset, length);this.value StringCoding.decode(charset, bytes, offset, length);} decode方法和encode对编码格式的处理是一样的。 对于以上两种情况我们只需要设置统一的编码格式一般都不会产生乱码问题。 编码编码格式首先先看看java编码类图 首先根据指定的chart设置ChartSet类然后根据ChartSet创建ChartSetEncoder对象最后再调用 CharsetEncoder.encode 对字符串进行编码不同的编码类型都会对应到一个类中实际的编码过程是在这些类中完成的。下面时序图展示详细的编码过程通过这编码的类图和时序图可以了解编码的详细过程。下面将通过一段简单的代码对ISO-8859-1、GBK、UTF-8编码 public class Test02 {public static void main(String[] args) throws UnsupportedEncodingException {String string 我是 cm;Test02.printChart(string.toCharArray());Test02.printChart(string.getBytes(ISO-8859-1));Test02.printChart(string.getBytes(GBK));Test02.printChart(string.getBytes(UTF-8));}/*** char转换为16进制*/public static void printChart(char[] chars){for(int i 0 ; i chars.length ; i){System.out.print(Integer.toHexString(chars[i]) ); }System.out.println();}/*** byte转换为16进制*/public static void printChart(byte[] bytes){for(int i 0 ; i bytes.length ; i){String hex Integer.toHexString(bytes[i] 0xFF); if (hex.length() 1) { hex 0 hex; } System.out.print(hex.toUpperCase() ); }System.out.println();} } -------------------------outPut: 6211 662f 20 63 6d 3F 3F 20 63 6D CE D2 CA C7 20 63 6D E6 88 91 E6 98 AF 20 63 6D 通过程序我们可以看到“我是 cm”的结果为 char[]6211 662f 20 63 6d ISO-8859-13F 3F 20 63 6D GBKCE D2 CA C7 20 63 6D UTF-8E6 88 91 E6 98 AF 20 63 6D 图如下 原文链接
http://www.yutouwan.com/news/258823/

相关文章:

  • 网站搭建计划书四川建设网中标候选人公示
  • 做论坛网站需要什么备案wordpress 中国版
  • 企业网站推广怎么做谷歌seo网络公司
  • 购物网站建设容易出现的问题百度知识营销
  • 衡阳购物网站开发案例网站设计 宽度
  • 怎样自建网站网站推广服务属于广告吗
  • 电子商务网站开发主要有哪些项目进度计划甘特图
  • 室内效果图网站wordpress 导航调用
  • 网站做支付功能难吗公司网站的主页优化
  • 深圳网站哪家强怎么做qq网站
  • 网站栏目规划wordpress 随机缩略图
  • 租车网站建设方案网站开发新型技术
  • 网站建设里程碑新开传奇网站999新服网
  • 建设一个网站平台招聘网站开发的公司
  • 网站建设实训心得与建议大连网络营销公司排名
  • 17网站一起做网店质量怎么样网络运营师资格证
  • 珠海制作公司网站编程加盟一般多少钱
  • 网上书店网站开发代码在线图片编辑源码
  • 白云区网站建设dz网站收款即时到账怎么做的
  • 中山精品网站建设渠道网络服务器租赁费高吗
  • dw用设计视图做网站西安工程建设信息中心
  • 阿里云虚拟主机如何上传网站it企业网站模板下载
  • 成都手机网站建云主机是什么
  • 期货网站开发网站开发属于哪个部门
  • 微网站开发教材什么是软文文案
  • 蕲春县住房和城乡建设局网站太原网站建设设计
  • 单页网站设计欣赏给个免费网站好人有好报
  • 网站商城制作无锡网红餐厅
  • 设计微信网站建设做微信公众号海报的网站
  • 搭建手机网站网站建设的定义