当前位置: 技术问答>java相关
编码转换问题
来源: 互联网 发布时间:2014-12-23
本文导语: import java.io.*; import java.util.*; public class gb2big5 { --static int iCharNum=0; --public static void main(String[] args) { ----System.out.println("Input GB2312 file, output Big5 file."); ----if (args.length!=2) { -- ------Syst...
import java.io.*;
import java.util.*;
public class gb2big5 {
--static int iCharNum=0;
--public static void main(String[] args) {
----System.out.println("Input GB2312 file, output Big5 file.");
----if (args.length!=2) {
--
------System.err.println("Usage: jview gb2big5 gbfile big5file");
--
------System.exit(1);
----}
----String inputString = readInput(args[0]);
----writeOutput(inputString,args[1]);
----System.out.println("Number of Characters in file: "+iCharNum+".");
--}
--static void writeOutput(String str, String strOutFile) {
----try {
------FileOutputStream fos = new FileOutputStream(strOutFile);
------Writer out = new OutputStreamWriter(fos, "Big5"); ------
------out.write(str);
------out.close();
----}
----catch(UnsupportedEncodingException e){
--e.printStackTrace();
------e.printStackTrace();
}
----catch (IOException e) {
------e.printStackTrace();
------e.printStackTrace();
----}--
--}
--static String readInput(String strInFile) {
----StringBuffer buffer = new StringBuffer();
----try {
------FileInputStream fis = new FileInputStream(strInFile);
------InputStreamReader isr = new InputStreamReader(fis, "GB2312");
------Reader in = new BufferedReader(isr);
------int ch;
------while ((ch = in.read()) > -1) {
--------iCharNum += 1;
--------buffer.append((char)ch);
------}
------in.close();
------return buffer.toString();
----}
----catch (IOException e) {
------e.printStackTrace();
------return null;
----}
--}
}
运行java gb2big5 gb.txt big5.txt
可出来的big5是乱码,什么原因?
import java.util.*;
public class gb2big5 {
--static int iCharNum=0;
--public static void main(String[] args) {
----System.out.println("Input GB2312 file, output Big5 file.");
----if (args.length!=2) {
--
------System.err.println("Usage: jview gb2big5 gbfile big5file");
--
------System.exit(1);
----}
----String inputString = readInput(args[0]);
----writeOutput(inputString,args[1]);
----System.out.println("Number of Characters in file: "+iCharNum+".");
--}
--static void writeOutput(String str, String strOutFile) {
----try {
------FileOutputStream fos = new FileOutputStream(strOutFile);
------Writer out = new OutputStreamWriter(fos, "Big5"); ------
------out.write(str);
------out.close();
----}
----catch(UnsupportedEncodingException e){
--e.printStackTrace();
------e.printStackTrace();
}
----catch (IOException e) {
------e.printStackTrace();
------e.printStackTrace();
----}--
--}
--static String readInput(String strInFile) {
----StringBuffer buffer = new StringBuffer();
----try {
------FileInputStream fis = new FileInputStream(strInFile);
------InputStreamReader isr = new InputStreamReader(fis, "GB2312");
------Reader in = new BufferedReader(isr);
------int ch;
------while ((ch = in.read()) > -1) {
--------iCharNum += 1;
--------buffer.append((char)ch);
------}
------in.close();
------return buffer.toString();
----}
----catch (IOException e) {
------e.printStackTrace();
------return null;
----}
--}
}
运行java gb2big5 gb.txt big5.txt
可出来的big5是乱码,什么原因?
|
我试了你的代码,原理上是可以的,只是有个别有问题,大概是涉及单字节的字符。
你的输出结果是BIG5的,当然需要使用支持BIG5的编辑器啦。我用IE看就没有问题,
只要选好编码就可以了。
你的输出结果是BIG5的,当然需要使用支持BIG5的编辑器啦。我用IE看就没有问题,
只要选好编码就可以了。
|
你的系统支持Big5吗?用工具看看吧!