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

tomcat做网站并发天门市网站建设

tomcat做网站并发,天门市网站建设,WordPress上传图片提示无效,网站关键词排名批量查询将字节数组转换为String似乎很容易#xff0c;但是很难做到正确。 每当字节转换为String或char时#xff0c;许多程序员都会犯忽略字符编码的错误#xff0c;反之亦然。 作为程序员#xff0c;我们都知道计算机只能理解二进制数据#xff0c;即0和1。我们看到和使用的所有… 将字节数组转换为String似乎很容易但是很难做到正确。 每当字节转换为String或char时许多程序员都会犯忽略字符编码的错误反之亦然。 作为程序员我们都知道计算机只能理解二进制数据即0和1。我们看到和使用的所有内容例如图像文本文件电影或任何其他多媒体都以字节形式存储但更重要的是是将字节编码或解码为字符的过程。 数据转换是任何编程面试中的重要主题并且由于字符编码的棘手性该问题是Java面试中最受欢迎的String Interview问题之一 。 从输入源例如XML文件HTTP请求网络端口或数据库读取字符串时必须注意编码它们的字符编码例如UTF-8UTF-16和ISO 8859-1。 如果在将字节转换为String时不使用相同的字符编码则最终会导致String损坏其中可能包含完全不正确的值。 您可能已经看到在将byte []转换为String之后的方括号是由于您当前的字符编码不支持这些值而只是显示了一些垃圾值。 我试图理解为什么程序经常会犯字符编码错误而我的研究和经验表明这可能是由于两个原因首先是国际化和字符编码处理不充分其次是ASCII字符受支持。几乎所有流行的编码方案都具有相同的值。 由于我们主要处理UTF-8Cp1252和Windows-1252之类的编码即使您使用不同的编码方案它们也会显示ASCII字符主要是字母和数字而不会失败。 当您的文本包含特殊字符例如é时 真正的问题就来了这在法语名称中经常使用。 如果平台的字符编码无法识别该字符那么您将看到一个不同的字符或某种垃圾并且可悲的是直到您的手被烫伤为止您不太可能对字符编码保持谨慎。 在Java中事情有点棘手因为默认情况下许多IO类例如InputStreamReader使用平台的字符编码。 这意味着如果在不同的计算机上运行程序则由于该计算机上使用的字符编码不同您可能会获得不同的输出。 在本文中我们将学习如何通过使用JDK API以及Guava和Apache Commons的帮助 在Java中将byte []转换为String 。 在Java中有多种将字节数组更改为String的方法您可以使用JDK中的方法也可以使用开放源代码的补充API例如Apache Commons和Google Guava。 这些API提供了至少两组方法来创建String形式的字节数组。 一种使用默认平台编码另一种使用字符编码。 您应该始终使用后面的一种不要依赖平台编码。 我知道可能是相同的或者到目前为止您可能还没有遇到任何问题但是安全起来总比对不起好。 正如我在上一篇关于将字节数组打印为十六进制字符串的文章中所指出的那样这也是在将字节转换为任何编程语言的字符时指定字符编码的最佳实践之一。 您的字节数组可能包含不可打印的ASCII字符。 首先让我们看看JDK将byte []转换为String的方式 您可以使用String的构造函数该构造函数采用字节数组和字符编码 String str new String(bytes, UTF-8); 这是将字节转换为String的正确方法前提是您可以确定字节是以您使用的字符编码进行编码的。 如果要从任何文本文件例如XML文档HTML文件或二进制文件读取字节数组则可以使用Apache Commons IO库将FileInputStream直接转换为String。 此方法还在内部缓冲输入因此无需使用其他BufferedInputStream 。 String fromStream IOUtils.toString(fileInputStream, UTF-8); 为了正确地将这些字节数组转换为String您必须首先通过读取元数据来发现正确的字符编码例如Content-Typexml encoding ”…”等具体取决于所读取数据的格式/协议。 这是我建议使用XML解析器例如SAX或DOM解析器读取XML文件的原因之一它们自己负责字符编码。 一些程序员还建议使用Charset over String来指定字符编码例如代替“ UTF-8”使用StandardCharsets.UTF_8主要是为了避免在最坏的情况下出现UnsupportedEncodingException。 保证所有Java平台实现都支持六个标准的Charset实现。 您可以使用它们来代替在String中指定编码方案。 简而言之始终首选使用StandardCharsets.ISO_8859_1而不是“ ISO_8859_1”如下所示 String str IOUtils.toString(fis,StandardCharsets.UTF_8); Java平台支持的其他标准字符集是 StandardCharsets.ISO_8859_1 标准字符集 标准字符集.UTF_16 标准字符集.UTF_16BE 标准字符集.UTF_16LE 如果您正在从输入流中读取字节则还可以查看我之前的文章了解有关在Java中将InputStream转换为String的5种方法 。 原始XML 这是我们的示例XML代码段以演示使用默认字符编码的问题。 该文件包含字母é 由于默认字符编码为Cp1252 因此无法在Eclipse中正确显示。 xml version1.0 encodingUTF-8? banksbanknameIndustrial Commercial Bank of China /nameheadquarters Beijing , China/headquarters/bankbanknameCrédit Agricole SA/nameheadquartersMontrouge, France/headquarters/bankbanknameSociété Générale/nameheadquartersParis, Île-de-France, France/headquarters/bank /banks 并且当您将字节数组转换为String而不指定字符编码时会发生这种情况例如 String str new String(filedata); 这将使用平台的默认字符编码在这种情况下为Cp1252 因为我们正在Eclipse IDE中运行此程序。 您会看到字母“é”显示不正确。 xml version1.0 encodingUTF-8? banksbanknameIndustrial Commercial Bank of China /nameheadquarters Beijing , China/headquarters/bankbanknameCrédit Agricole SA/nameheadquartersMontrouge, France/headquarters/bankbanknameSociété Générale/nameheadquartersParis, ÃŽle-de-France, France/headquarters/bank /banks 要解决此问题请在从字节数组创建String时指定字符编码例如 String str new String(filedata, UTF-8); 顺便说一句让我说清楚即使我已经在这里使用InputStream读取XML文件这也不是一个好习惯实际上这是个坏习惯。 您应该始终使用正确的XML解析器来读取XML文档。 如果您不知道如何操作请查看本教程 。 由于此示例主要是为了向您展示字符编码为何重要因此我选择了一个易于使用且看起来更实用的示例。 这是我们的示例程序以说明为什么依赖默认字符编码是一个坏主意以及为什么在Java中将字节数组转换为String时必须使用字符编码。 在此程序中我们使用Apache Commons IOUtils类将文件直接读取到字节数组中。 它负责打开/关闭输入流因此您不必担心泄漏文件描述符。 现在如何使用该数组创建String是关键。 如果提供正确的字符编码则将获得正确的输出否则将获得几乎正确但不正确的输出。 import java.io.FileInputStream; import java.io.IOException; import org.apache.commons.io.IOUtils;/*** Java Program to convert byte array to String. In this example, we have first* read an XML file with character encoding UTF-8 into byte array and then created* String from that. When you dont specify a character encoding, Java uses* platforms default encoding, which may not be the same if file is a XML document coming from another system, emails, or plain text files fetched from an * HTTP server etc. You must first discover correct character encoding* and then use them while converting byte array to String.** author Javin Paul*/ public class ByteArrayToString{public static void main(String args[]) throws IOException {System.out.println(Platform Encoding : System.getProperty(file.encoding));FileInputStream fis new FileInputStream(info.xml);// Using Apache Commons IOUtils to read file into byte arraybyte[] filedata IOUtils.toByteArray(fis);String str new String(filedata, UTF-8);System.out.println(str);} }Output : Platform Encoding : Cp1252 ?xml version1.0 encodingUTF-8? banksbanknameIndustrial Commercial Bank of China /nameheadquarters Beijing , China/headquarters/bankbanknameCrédit Agricole SA/nameheadquartersMontrouge, France/headquarters/bankbanknameSociété Générale/nameheadquartersParis, Île-de-France, France/headquarters/bank /banks 永远记住在将字节数组转换为String的同时使用字符编码不是最佳实践而是强制性的事情。 无论编程语言如何都应始终使用它。 顺便说一句您可以注意以下几点这将帮助您避免几个讨厌的问题 使用源代码中的字符编码例如HTML文件中的Content-Type或xml encoding ”…”。 使用XML解析器来解析XML文件而不是查找字符编码并通过InputStream读取它有些事情最好仅用于演示代码。 首选字符集常量例如StandardCharsets.UTF_16而不是字符串“ UTF-16” 从不依赖平台的默认编码方案 当您将字符数据转换为字节时也应应用此规则例如使用String.getBytes方法将String转换为字节数组。 在这种情况下它将使用平台的默认字符编码而不是使用应采用字符编码的重载版本。 这就是如何在Java中将字节数组转换为String的全部内容。 如您所见Java API特别是java.lang.String类提供了方法和构造函数这些方法和构造函数采用byte []并返回String反之亦然但是默认情况下它们依赖于平台的字符编码这可能不正确如果字节数组是根据XML文件HTTP请求数据或网络协议创建的。 您应该始终从源代码本身获得正确的编码。 如果您想了解更多关于每个程序员都应该知道的字符串是什么你可以检出该文章。 翻译自: https://www.javacodegeeks.com/2014/09/2-examples-to-convert-byte-array-to-string-in-java.html
http://www.pierceye.com/news/472404/

相关文章:

  • 万网 网站建设合同最好的网站开发语言
  • 网站备案密码收不到典当 网站
  • 东莞网站建设推广服务网站建设开票单位
  • 贵港公司做网站东莞凤岗企业网站建设推广
  • 网站制作过程中碰到的问题微信怎么做链接推广产品
  • 做网站留后门是怎么回事视频网站开发需求分析
  • 关于做网站的了解点电子商务应用平台包括哪些
  • 垂直门户网站都有什么网站首页index.html
  • wordpress网站加载效果线上推销的方法
  • 网站都有什么语言杭州网络营销公司
  • 济南高新网站制作正规seo排名外包
  • 网站方案讲解技巧ppt的免费网站
  • 个人网站名称有哪些WordPress dux修改
  • 普法网站建设方案app制作开发公司怎么收费
  • 网站平台建设哪家公司好网站建设建站在线建站
  • 龙岗区住房和建设局在线网站网站如何做团购
  • 河南省建设监理协会网站证书查询wordpress 修改链接
  • 做网站业务员怎么样深圳福田最新新闻事件
  • 衡水商城网站建设外贸汽车配件做那个网站
  • 做网站的色彩搭配的小知识群艺馆网站建设方案
  • 深圳 汽车网站建设学习网站建设培训
  • 制作手机网站用什么软件唐山网站专业制作
  • 网站后台如何登陆互联网营销中心
  • 做排行榜的网站知乎长沙服务好的网络营销
  • 做网站猫要做端口映射吗太原网站建设口碑推荐
  • 新闻门户网站是什么快速搭建网页
  • 随意设计一个网站域名是什么?
  • 找人做网站需要准备什么材料用视频做网站背景
  • 大连做网站首选领超科技wordpress注册邮件发送设置
  • 西山区城市建设局网站如何做防水网站