转换文件编码(去除乱码)

 import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 public class changecode{

public static void main(String []args)throws Exception
{
  //paiOne("test2.txt","UTF-8","GB2312");

paiOne(args[0],args[1],args[2]);
}


// Verify that no character has a hex value greater than 0xFFFD, or less than 0x20.
// Check that the character is not equal to the tab ("t), the newline ("n), the carriage return ("r), or is an invalid XML character below the range of 0x20. If any of these characters occur, an exception is thrown.

public static String CheckUnicodeString(String values)
    {
char[] value=new char[values.length()];value=values.toCharArray();
    for (int i=0; i < values.length(); ++i) {
        if (value[i] > 0xFFFD)
        {
                         value[i]='\n';

        //    throw new Exception("Invalid Unicode");//或者直接替换掉0x0 value[i]='"n';
        }
     
       else if (value[i] < 0x20 && value[i] != '\t' & value[i] != '\n' & value[i] != '\r')
        {
                                    value[i]='\n';

         //   throw new Exception("Invalid Xml Characters");//或者直接替换掉0x0 value[i]='"n';
        }
    }
                
                 String s=new String(value);
                  return s;
    }

private static void paiOne(String files,String sourceCode,String targetCode)
    throws Exception
  {
File file=new File(files);
 String strOut;
    BufferedReader br = null;
    br = new BufferedReader(new InputStreamReader(new FileInputStream(file), sourceCode));
    String line = "";
 
    String[] temp = (String[])null;
   BufferedWriter bw = null;
 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( "result.txt", false), targetCode));
    while ((line = br.readLine()) != null)
    {
         byte[] b = line.getBytes(sourceCode);
 String str=new String(b,sourceCode);
               byte[] c=str.getBytes(targetCode);

 strOut = new String(c, targetCode);
 if(targetCode.equals("utf-8")||targetCode=="UTF-8" ||targetCode=="unicode")
 strOut=CheckUnicodeString(strOut);
    
      bw.write(strOut);
  bw.newLine();
    }


    br.close();
    br = null;
    line = null;
 
 
    
    
    bw.flush();

    bw.close();

    bw = null;
 
    
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当将MapGIS文件转为shape文件时出现乱码问题可能是由于以下原因引起的: 1.字符编码不匹配:MapGIS文件的字符编码与shape文件的字符编码不一致,导致转换过程中出现乱码。可以尝试将两种文件的字符编码统一设置为相同的编码格式,例如UTF-8或GBK。 2.数据字段类型不匹配:MapGIS文件中的某些数据字段类型与shape文件要求的字段类型不一致,可能导致转换过程中出现乱码。可以检查两种文件中的数据字段类型,确保它们匹配。 3.数据内容包含特殊字符:MapGIS文件中某些数据记录包含了特殊字符,而shape文件不支持或不兼容这些特殊字符,从而导致转换过程中出现乱码。可以尝试去除MapGIS文件中的特殊字符,再进行转换。 为解决乱码问题,可以采取以下方法: 1.确保MapGIS文件和shape文件的字符编码一致,可以通过将两种文件的字符编码设置为相同的编码格式来达到一致。 2.检查两种文件中的数据字段类型是否匹配,如果不匹配,则尝试调整数据字段类型,使其一致。 3.清理MapGIS文件中的特殊字符,可以使用文本编辑工具或编程语言对数据进行处理,去除特殊字符。 4.如果以上方法仍无法解决乱码问题,可以尝试使用其他转换工具或软件,或者寻求专业人士的帮助来处理该问题。 以上是关于将MapGIS文件转为shape文件时遇到乱码问题的一些可能原因和解决方法的简要介绍,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值