要转码的内容:
 \u53EF\u4E58\u516C\u4EA4758\u8DEF\u3001358\u652F\u8DEF\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u5230\u5929\u901A\u82D1\u4E0B\u8F66\u5F80\u56DE\u8D7050\u7C73\uFF0C\u5411\u897F\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5317200-300\u7C73\u5373\u5230\uFF0C\u6216\u4E3D\u6C34\u56ED\u4E0B\u8F66\u7A7F\u8FC7\u5929\u901A\u82D1\u4E94\u533A\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5357150-250\u7C73\u5373\u5230\uFF1B\u4E58\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\uFF0C\u51FA\u7AD9\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\uFF1B\u7531\u5317\u5411\u5357758\u8DEF\u3001358\u652F\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u3001\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\u3002\r\n
 
麻烦我想问下 有没有什么好的转码方式可以转出我要的结果
 
结果是这样的:
 可乘公交758路、358支路、858路、849路、984路、985路、850路、426路、464路、465路、803路到天通苑下车往回走50米,向西到城铁五号线下面向北200-300米即到,或丽水园下车穿过天通苑五区到城铁五号线下面向南150-250米即到;乘地铁五号线到天通苑南站下车,出站往南走南300-400米即到;由北向南758路、358支、858路、849路、984路、985路、850路、426路、464路、465路、803路、地铁五号线到天通苑南站下车往南走南300-400米即到。
 
我的转码代码是:
private static String decodeUnicode(String dataStr) { 
         int start = 0; 
 int end = 0; 
 final StringBuffer buffer = new StringBuffer(); 
 while( start > -1 ) { 
    end = dataStr.indexOf( "\\u", start + 2 ); 
    String charStr = ""; 
    if( end == -1 ) { 
       charStr = dataStr.substring( start + 2, dataStr.length() ); 
    } else { 
       charStr = dataStr.substring( start + 2, end); 
    } 
    char letter = (char) Integer.parseInt( charStr, 16 ); 
    buffer.append( new Character( letter ).toString() ); 
    start = end; 
 } 
 return buffer.toString(); 
 } 
 我这样转, 转到\u5317200-300 这个位置就报错了
 我新手 没多少分请大虾们多多包含 这是我在控制台打出的内容:
改变前===="\u5317\u4EAC\u5E02\u660C\u5E73\u533A\u4E1C\u5C0F\u53E3\u9547\u4E2D\u6EE9\u6751"
改变后====北京市昌平区东小口镇中滩村
改变前===="\u53EF\u4E58\u516C\u4EA4758\u8DEF\u3001358\u652F\u8DEF\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u5230\u5929\u901A\u82D1\u4E0B\u8F66\u5F80\u56DE\u8D7050\u7C73\uFF0C\u5411\u897F\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5317200-300\u7C73\u5373\u5230\uFF0C\u6216\u4E3D\u6C34\u56ED\u4E0B\u8F66\u7A7F\u8FC7\u5929\u901A\u82D1\u4E94\u533A\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5357150-250\u7C73\u5373\u5230\uFF1B\u4E58\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\uFF0C\u51FA\u7AD9\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\uFF1B\u7531\u5317\u5411\u5357758\u8DEF\u3001358\u652F\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u3001\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\u3002\r\n"
Exception in thread "main" java.lang.NumberFormatException: For input string: "5317200-300"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:456)
at test.TestLiantong.decodeUnicode(TestLiantong.java:352)
at test.TestLiantong.zhi(TestLiantong.java:317)
at test.TestLiantong.neirong(TestLiantong.java:254)
at test.TestLiantong.main(TestLiantong.java:52)java 转码

解决方案 »

  1.   


            String ss="\u53EF\u4E58\u516C\u4EA4758\u8DEF\u3001358\u652F\u8DEF\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u5230\u5929\u901A\u82D1\u4E0B\u8F66\u5F80\u56DE\u8D7050\u7C73\uFF0C\u5411\u897F\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5317200-300\u7C73\u5373\u5230\uFF0C\u6216\u4E3D\u6C34\u56ED\u4E0B\u8F66\u7A7F\u8FC7\u5929\u901A\u82D1\u4E94\u533A\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5357150-250\u7C73\u5373\u5230\uFF1B\u4E58\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\uFF0C\u51FA\u7AD9\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\uFF1B\u7531\u5317\u5411\u5357758\u8DEF\u3001358\u652F\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u3001\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\u3002\r\n";
            String sss="可乘公交758路、358支路、858路、849路、984路、985路、850路、426路、464路、465路、803路到天通苑下车往回走50米,向西到城铁五号线下面向北200-300米即到,或丽水园下车穿过天通苑五区到城铁五号线下面向南150-250米即到;乘地铁五号线到天通苑南站下车,出站往南走南300-400米即到;由北向南758路、358支、858路、849路、984路、985路、850路、426路、464路、465路、803路、地铁五号线到天通苑南站下车往南走南300-400米即到。\r\n";
            System.out.println(ss.equals(sss));//true
      

  2.   

    去你的java安装目录的bin目录下,有一个native2ascii.exe,双击打开黑窗口,粘贴,回车万事大吉!!!
      

  3.   

    随便写了个,不保证没BUG...
    把你要解码的内容存到test.txt里面就行了
    至少我试了下你这个例子是没问题的public static void main(String[] args) throws Exception {
    RandomAccessFile file = new RandomAccessFile("test.txt", "r");
    FileChannel fileChannel = file.getChannel();
    ByteBuffer buffer = fileChannel
    .map(MapMode.READ_ONLY, 0, file.length());
    CharBuffer cBuffer = Charset.defaultCharset().decode(buffer);
    System.out.println("解码前:");
    System.out.println(cBuffer);
    CharArrayReader reader = new CharArrayReader(cBuffer.toString()
    .toCharArray());
    StringBuilder sb = new StringBuilder();
    char previous = 0;
    while (reader.ready()) {
    char c = (char) reader.read();
    if (previous == '\\' && c == 'u') {
    byte[] data = new byte[2];
    for (int i = 0; i < data.length; i++) {
    data[i] = Byte.parseByte(String.valueOf((char)reader
    .read()), 16);
    data[i] = (byte) ((data[i] << 4 )|Byte
    .parseByte(String.valueOf((char)reader.read()), 16));
    }
    sb.append(new String(data, "unicode"));
    previous = 0;
    } else {
    sb.append(previous);
    previous = c;
    }
    }
    if(previous != 0)
    sb.append(previous);
    System.out.println("解码后:");
    System.out.println(sb.toString().replaceAll("\u0000", ""));
    }
      

  4.   

    public static void main(String[] args) throws Exception {
    RandomAccessFile file = new RandomAccessFile("test.txt", "r");
    FileChannel fileChannel = file.getChannel();
    ByteBuffer buffer = fileChannel
    .map(MapMode.READ_ONLY, 0, file.length());
    CharBuffer cBuffer = Charset.defaultCharset().decode(buffer);
    file.close();
    String content = cBuffer.toString();
    System.out.println("解码前:");
    System.out.println(content);
    Pattern pattern = Pattern.compile("\\\\u[\\da-fA-F]{4}");
    Matcher matcher = pattern.matcher(content);
    StringBuffer result = new StringBuffer();
    while(matcher.find()){
    String c = decode(matcher.group());
    matcher.appendReplacement(result, String.valueOf(c));
    }
    matcher.appendTail(result);
    System.out.println("解码后:");
    System.out.println(result);
    }

    private static String decode(String str) throws UnsupportedEncodingException{
    byte[] data = new byte[2];
    data[0] = (byte) Integer.parseInt(str.substring(2, 4), 16);
    data[1] = (byte) Integer.parseInt(str.substring(4, 6), 16);
    return new String(data, "unicode");
    }这样是不是清楚多了
      

  5.   

    只要你的java文件是utf-8编码的直接输出就行了。因为java中默认就是用unicode码,你java文件的编码是u8的直接输出它就会转了String str="\u53EF\u4E58\u516C\u4EA4758\u8DEF\u3001358\u652F\u8DEF\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u5230\u5929\u901A\u82D1\u4E0B\u8F66\u5F80\u56DE\u8D7050\u7C73\uFF0C\u5411\u897F\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5317200-300\u7C73\u5373\u5230\uFF0C\u6216\u4E3D\u6C34\u56ED\u4E0B\u8F66\u7A7F\u8FC7\u5929\u901A\u82D1\u4E94\u533A\u5230\u57CE\u94C1\u4E94\u53F7\u7EBF\u4E0B\u9762\u5411\u5357150-250\u7C73\u5373\u5230\uFF1B\u4E58\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\uFF0C\u51FA\u7AD9\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\uFF1B\u7531\u5317\u5411\u5357758\u8DEF\u3001358\u652F\u3001858\u8DEF\u3001849\u8DEF\u3001984\u8DEF\u3001985\u8DEF\u3001850\u8DEF\u3001426\u8DEF\u3001464\u8DEF\u3001465\u8DEF\u3001803\u8DEF\u3001\u5730\u94C1\u4E94\u53F7\u7EBF\u5230\u5929\u901A\u82D1\u5357\u7AD9\u4E0B\u8F66\u5F80\u5357\u8D70\u5357300-400\u7C73\u5373\u5230\u3002\r\n";
    System.out.println(str);