`
wankunde
  • 浏览: 162306 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hadoop web中查看文件内容乱码解决

阅读更多

 

错误描述:在50075查看hdfs数据文件中有 & 符号时,中文数据乱乱码

错误原因:系统默认字符集:Charset.defaultCharset().name() 为UTF-8,但是在系统在web程序中取出得编码值为:US-ASCII。在字符串编码时,默认使用的是US-ASCII字符集,该字符集应该是UTF-8子集中的单字符集,导致中文无法由byte拼装还原。

 

参考:String类

public String(byte bytes[], int offset, int length)

public byte[] getBytes()

 

URL地址:http://datanode:50075/browseBlock.jsp?blockId=1073779813&blockSize=15&genstamp=1099511816876&filename=%2Ftmp%2Fwankun%2Faccountinput%2Fd&datanodePort=50010&namenodeInfoPort=50070&nnaddr=192.168.39.123:8020


问题解决:

包:hadoop-common-2.3.0-cdh5.0.1.jar

类:org.apache.hadoop.http.HtmlQuoting 

修改代码:

 

  public static String quoteHtmlChars(String item) {

    if (item == null) {

      return null;

    }

    byte[] bytes = item.getBytes(Charsets.UTF_8);

    if (needsQuoting(bytes, 0, bytes.length)) {

      ByteArrayOutputStream buffer = new ByteArrayOutputStream();

      try {

        quoteHtmlChars(buffer, bytes, 0, bytes.length);

        return buffer.toString("UTF-8");

      } catch (IOException ioe) {

        // Won't happen, since it is a bytearrayoutputstream

      }

      return item;

    } else {

      return item;

    }

  }

  

备注:

1. UTF-8={US-ASCII + 多字符集}

2. 字符串解码还原时,使用的是UTF-8字符集

3. 单独测试,系统默认用UTF-8进行编码,但是HtmlQuoting中却用US-ASCII编码

 

 

 

分享到:
评论

相关推荐

    hadoop中文乱码问题

    例如,使用Hadoop命令行执行`hadoop fs -cat`查看文件内容时,如果文件不是UTF-8编码,可以通过`iconv`工具先转换编码再查看。 6. **源码分析**: 对于开发者来说,深入理解Hadoop源码有助于找出乱码的根源。可以...

    springboot对hadoop增删改查源码及hadoop图片访问

    在本项目中,我们主要探讨的是如何利用SpringBoot...通过这些技术的结合,我们可以构建一个高效且安全的系统,允许用户在Web应用中无缝访问存储在Hadoop集群中的大数据,同时解决了在IE浏览器中显示图片的兼容性问题。

    java_web项目的环境部署

    为了统一数据库的字符集为UTF-8,可以在MySQL的配置文件(如`my.cnf`或`my.ini`)中添加以下内容: ```plaintext [client] default-character-set=utf8 [mysqld] default-character-set=utf8 collation-server=utf...

    FlinkHBase场景化解决方案.pdf

    根据提供的文件信息,我们可以从标题、描述以及部分内容中提炼出一系列与Flink和HBase相关的关键技术知识点。以下是对这些知识点的详细阐述: ### FlinkHBase场景化解决方案 #### 标题解读 - **Flink**:Apache ...

    支持中文的hive-0.80

    在大数据处理领域,Hive是一款基于Hadoop的数据仓库工具,它允许用户使用SQL类查询语言(HQL)来处理存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。然而,早期版本的Hive并不直接支持中文字符,这在处理包含...

    去IOE真相.pdf

    3. 开源技术:文档中出现了OpenStack、Cloud Foundry、Docker、Hadoop等,这些是开源技术的代表,许多企业在构建自己的云计算平台和大数据解决方案时,选择这些技术以降低成本和提升灵活性。 4. 编程语言和开发工具...

    SS整合1

    至于标签中的"大数据",在这个场景中可能是指Spring框架可以与大数据处理技术(如Hadoop、Spark等)集成,但这里并没有直接涉及大数据的具体配置。 总结来说,SS整合的核心在于正确配置Maven依赖、`web.xml`以及...

    hbase+opentsdb+grafana视图展现

    - 进入到`opentsdb-2.1.0/src/graph`目录下的`Plot.java`文件,在第280行处添加相应的代码,以解决中文乱码问题。 **5. 编译** - 使用以下命令编译: ```bash ./build.sh ``` **6. 创建 HBase 表并运行** ...

    JAVA分析

    在给定的文件信息中,虽然大部分内容似乎是乱码或者非结构化数据,但我们可以从中抽取出与IT行业,特别是与Java相关的知识点进行探讨。由于直接的信息量有限,我们将基于标题“JAVA分析”来深入讨论Java编程语言的...

    数据库设计和实现指南.pdf

    虽然提供的部分内容看起来是乱码或格式错误的信息,但从标题、描述和标签中,我们可以提炼出以下关键知识点: ### 1. IBM Informix 数据库简介 IBM Informix 是一款高性能的关系型数据库管理系统(RDBMS),广泛...

    JAVA就业前景.pdf

    由于提供的文件内容中存在大量的重复词汇和乱码,这可能是由于OCR扫描文档的识别错误导致的。这使得直接从提供的文本中提取准确的知识点变得非常困难。然而,我将尝试根据文件的标题和描述,结合我对Java就业市场的...

Global site tag (gtag.js) - Google Analytics