`

Hbase中文字符与byte[]的转换

阅读更多
Hbase客户端信息采用byte[]与服务器进行通信,中文字符与byte[]的转换的转换有两种方式:

1.采用String类自带的函数
String s  = "你好中国";
byte [] b = s.getBytes();
对应的byte[]转换为String为:
s = new String(s.getBytes());

2.采用org.apache.hadoop.hbase.util.Bytes类的函数
String s  = "你好中国";
byte [] b = Bytes.toBytes(s);
对应的byte[]转换为String为:
s = Bytes.toString(Bytes.toBytes(s));

方法1 与方法2 都能完成自己的转换,输出也正常。
但是两种方法不能混合使用,因为两种方法中b值却一样,
方法1:b = [-60, -29, -70, -61, -42, -48, -71, -6]
方法2:b = [-28, -67, -96, -27, -91, -67, -28, -72, -83, -27, -101, -67]
原因在于换行的时候采用的Charset不一致
在方法2中 Bytes.toBytes(s); 最后调用的是String类中的s.getBytes("UTF-8");而不是s.getBytes()。
s.getBytes("UTF-8")与s.getBytes()最后都调用了的
static byte[] encode(String charsetName, char[] ca, int off, int len)
关键在于charsetName不同。
在看s.getBytes()最后的charsetName,
产生的函数为:
    public static Charset defaultCharset() {
        if (defaultCharset == null) {
    synchronized (Charset.class) {
java.security.PrivilegedAction pa =
    new GetPropertyAction("file.encoding");
String csn = (String)AccessController.doPrivileged(pa);
Charset cs = lookup(csn);
if (cs != null)
    defaultCharset = cs;
                else
    defaultCharset = forName("UTF-8");
            }
}
return defaultCharset;
    }
跟系统参数file.encoding的值有关,查看下本机的file.encoding
System.out.println(System.getProperty("file.encoding"));
值为GB18030,因此以上两种方式产生的byte[]自然不同,
因此Hbase中文字符与byte[]的转换要统一编码格式,全部采用方法2最好,如果要使用String类的方法
使用方法如下:
String s  = "你好中国";
byte [] b = s.getBytes("UTF-8");
对应的byte[]转换为String为:
s = new String(Bytes.toBytes(s),"UTF-8");

以上区别只针对与中文的转换,数字与英文以及"`~!@#$%^&*()_+=-|[]{}\\/.,<>?"没有区别!!
2
2
分享到:
评论
1 楼 Mybeautiful 2011-11-23  
写的很好..

相关推荐

    HBase官方文档中文版-HBase手册中文版

    这份“HBase官方文档中文版”提供了全面深入的HBase知识,帮助用户理解和掌握如何在大数据场景下有效地使用HBase。 一、HBase概述 HBase设计目标是提供大规模数据的实时读写能力,它运行在Hadoop之上,利用HDFS作为...

    HBASE权威指南【中文版】

    hbase权威指南是关于HBASE的基础读物,掌握HBASE的基石

    《Learning HBase中文版》

    《Learning HBase中文版》这本书是为那些希望深入了解HBase这一分布式列式数据库技术的读者而准备的。HBase作为Apache Hadoop生态系统的一部分,被广泛应用于大数据存储与处理场景,尤其在实时数据查询方面表现出色...

    Hbase 安装与基本使用

    4. **配置Hadoop**:HBase需要与Hadoop协同工作,因此需要配置Hadoop的相关路径。在HBase的conf目录下,编辑`hbase-env.cmd`文件,设置`HADOOP_CONF_DIR`指向Hadoop的配置目录。 5. **修改配置文件**:编辑`hbase-...

    HbaseTemplate 操作hbase

    而Spring Data Hadoop是Spring框架的一部分,它提供了与Hadoop生态系统集成的工具,包括对HBase的操作支持。本篇文章将详细讲解如何利用Spring Data Hadoop中的HbaseTemplate来操作HBase。 首先,我们需要理解...

    Hbase 官方中文文档

    HBase官方中文文档概述了Apache HBase TM的基本概念、配置方法、升级策略、shell使用、数据模型、架构设计、安全机制、API接口、性能调优以及故障排除等多方面的知识。HBase是一个开源的非关系型分布式数据库(NoSQL...

    HBase配置文件与HBase doc文档

    5. **zoo.cfg**:虽然HBase使用Zookeeper,但Zookeeper的配置通常是在Zookeeper自己的配置文件中完成的,不过这里也可能包含一些与HBase相关的Zookeeper设置。 ### HBase Doc文档 HBase的官方文档提供了详尽的指南...

    Hbase的安装过程及基本操作

    要使用Java与Hbase交互,首先创建一个新的Java项目,并添加Hbase所需的JAR文件到项目的类路径。这些JAR文件位于`/usr/local/hbase/lib`目录下,包括Hbase客户端库和其他依赖库。 接下来,编写一个简单的Java程序...

    hbase安装与使用

    ### HBase 安装与使用知识点详解 #### 概述 HBase 是一款构建于 Hadoop 之上的分布式、可扩展的大规模数据存储系统。它提供了类似 Google BigTable 的功能特性,非常适合处理海量数据和高并发读写需求的应用场景。...

    Python-HBase中文参考指南

    **Python-HBase中文参考指南** 在大数据处理领域,Apache HBase是一个重要的分布式列式数据库,它构建于Hadoop之上,提供了高并发、低延迟的数据存储服务。本指南针对HBase的中文用户,旨在帮助读者更好地理解和...

    hbase分页查询实现.pdf

    在HBase中,需要将字符串转换为字节数组。作者使用了getBytes()方法来将字符串转换为字节数组。 知识点5:分页查询的实现 作者使用了getDataMap()方法来实现分页查询。该方法传入了表名、开始行、结束行、当前页码...

    HBase 0.97 中文文档

    HBase 0.97 中文文档 HBase 0.97 中文文档 HBase 0.97 中文文档

    分布式数据库HBase安装配置与实践.doc

    【分布式数据库HBase安装配置与实践】 HBase是一款基于Google Bigtable理念设计的开源NoSQL数据库,它构建在Hadoop之上,适用于处理大规模数据。在本文档中,我们将详细介绍如何在Linux环境中安装、配置和实践HBase...

    Hbase中文文档

    3.1. 从HBase 0.20.x or 0.89.x 升级到 HBase 0.90.x 3.2. 从 0.90.x 到 0.92.x 4. The HBase Shell 4.1. 使用脚本 4.2. Shell 技巧 5. 数据模型 5.1. 概念视图 5.2. 物理视图 5.3. 表 5.4. 行 5.5. 列族 5.6. Cells...

    hbase导出csv,文本,html文件

    这个过程通常涉及到多个步骤,包括HBase与Hive的交互,以及数据的迁移和转换。 描述中提到的方法是首先通过HBase的条件查询功能筛选出所需的数据,然后将这些数据导出到Hive中。Hive提供了更灵活的数据处理能力,...

    Hbase与zookeeper文档

    【HBase与Hadoop组件的关系】 1. **HDFS(Hadoop Distributed File System)**:HBase利用HDFS作为底层的文件存储系统,确保数据的分布式存储和容错性。 2. **MapReduce**:HBase使用Hadoop的MapReduce框架进行批量...

    HBase分布式事务与SQL实现

    在深入了解HBase分布式事务与SQL实现前,我们首先需要明确几个核心概念和组件,这些包括HBase基础架构、Google Percolator模型、TiDB分布式数据库,以及它们之间的关系。 HBase是一款分布式的、开源的NoSQL数据库,...

    HBase官方文档

    HBase支持通过非Java语言的JVM交互、REST、Thrift以及C/C++ Apache HBase Client等多种方式与外部程序进行交互。 ### 性能调优 性能调优包括操作系统、网络、Java、HBase配置、ZooKeeper、Schema设计等方面的优化...

Global site tag (gtag.js) - Google Analytics