最近工作中遇到一个问题,由于海外系统环境默认采用UTF-8格式编码,以支持多语言环境。而国内系统由于只需要支持中英文,故默认采用GBK编码格式。因此当把海外环境生成的交易报告单发送给国内的报表系统时,报表系统显示为乱码,无法正常阅读。

基于此,我百度了下相关资料。发现JAVA自带一种转码工具nativenative2ascii,可以实现码制间的转换。它是sun java sdk提供的一个工具,用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。Unicode编码的定义:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

其用法如下:

native2ascii [-reverse] [-encoding 编码] [inputfile [outputfile]]

说明:

-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。

-encoding encoding_name:转换为指定编码,encoding_name为编码名称。

inputfile:表示输入文件全名。

outputfile:输出文件名。如果缺少此参数,将输出到控制台。

实践

A:将zh.txt转换为GBK编码,输出文件到i.txt

native2ascii -encoding GBK zh.txt i.txt

B:将i.txt转换为GBK编码,输出到i_gbk.txt

native2ascii -reverse -encoding GBK i.txt i_gbk.txt

native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为(生成的)目标文件的编码格式。

总结

native2ascii是一个非常好的转码工具,并且转码是可逆的!而其真正的含义并非本地编码——>转码为ASCII码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码。

java 转码_JAVA自带转码方式的学习相关推荐

  1. (H5+安卓+ios)直播app系统源码,直播商城带货源码,方维直播app系统,直播短视频源码

    商品介绍 (H5+安卓+ios)直播app系统源码,直播商城带货源码,方维直播app系统,直播短视频源码,本系统有三个版本:带商城直播系统,带H5直播系统,和一般的直播短视频系统,默认带H5版本系统 ...

  2. Java指令全集_Java的JVM字节码指令集详解

    本文详细介绍了如何使用javap查看java方法中的字节码.以及各种字节码的含义,并且配以完善的案例,一步步,从头到尾带领大家翻译javap的输出.在文末还附有JVM字节码指令集表. 本文不适合没有J ...

  3. java 机器码 虚拟机_Java虚拟机:源码到机器码

    无论什么语言写的代码,其到最后都是通过机器码运行的,无一例外.那么对于 Java 语言来说,其从源代码到机器码,这中间到底发生了什么呢?这就是今天我们要聊的. 如下图所示,编译器可以分为:前端编译器. ...

  4. java命令大全_Java自带命令详解

    1. 背景 给一个系统定位问题的时候,知识.经验是关键基础,数据(运行日志.异常堆栈.GC日志.线程快照[threaddump / javacore文件].堆转储快照[heapdump / hprof ...

  5. java 飞机 源码_Java 飞机游戏源码(带音乐)

    [实例简介] [实例截图] [核心代码] package liujunbo.feiji; import java.awt.Color; import java.awt.Frame; import ja ...

  6. java 线程池 源码_java线程池源码分析

    我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 这两个方法又什么区别呢? 他们背后的原理是什么呢? 线程池中线程超过了coresize后会怎么操作呢? 为 ...

  7. java接口源码_java collection接口源码

    package java.util; /* * 1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素, * 有些集合有序,JDK不提供本接口的实现 ...

  8. java join 源码_java并发:join源码分析

    join join join是Thread方法,它的作用是A线程中子线程B在运行之后调用了B.join(),A线程会阻塞直至B线程执行结束 join源码(只有继承Thread类才能使用) 基于open ...

  9. java 计算反码_java基础知识-原码、反码、补码、运算符

    一.原码.反码.补码 原码 一个数转化成二进制. 用最高位来表示正负,最高位为0表示正数,最高位为1表示负数. 例如: short i=5: 因为在java里short占2个字节转化成二进制就是 00 ...

最新文章

  1. 专用ADC与群集软件之比较
  2. 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错?
  3. ISA Server 2007 beta TAP 开始招人
  4. day15 Ui自动化元素的定位
  5. 解决ipfs 出现Error: can‘t publish while offline: pass `--allow-offline` to override的问题
  6. texlive 2020下载与安装
  7. Oracle 以某字段分组,以某字段排序,取前几条
  8. 推荐轻量级MySQL数据库管理工具 Adminer
  9. 中科恒伦助力长江电力移动办公平台账号加固
  10. 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
  11. 【二分答案】【中位数】codeforces 394 bun
  12. Android 手机 超级终端命令解析
  13. Intellij idea 插件 | 超越鼓励师 吐槽
  14. 蓝牙电话之HFP-通话
  15. UDS 0x22服务 DID增加流程
  16. CDay09 联合和枚举
  17. 32位浮点数转十进制与二进制
  18. 数组的filter方法,数组过滤方法
  19. 防止恶意刷新页面的Java实现
  20. CentOS6 64位系统安装步骤

热门文章

  1. 如何将List列表转化为JSON
  2. 东芝是笔记本电脑的发明者,如今沦落至此?
  3. template内容模板元素
  4. pytorch转caffe2 之 onnx转caffe2报错的解决方法 ValueError: Don't know how to translate op Unsqueeze
  5. Java 字符串转16进制数
  6. 每日一句 (November)
  7. Mysql 查看用户表格
  8. Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]
  9. 还在担心没工作岗位么,爬取271W条数据为你做精准分析
  10. Linux设置开机自启动脚本