2014-11-15 4 views
-1

моя проблема в том, что если я использую строковый жесткий код, ответ правильный, но если я использую введенную строку, не работает. , например:java - Строковый жесткий код работает, но введен не работает

String variable = " \u0020\uFEB3\uFEE8\uFB93\u0020\uFEBB\uFE92\uFEEE\u0631\u0020"; 
TextView show = (TextView) findViewById(R.id.preshow); 
show.settext(variable); 

TextView показывает: صنگ صبور

но:

File filematn = new File(Environment.getExternalStorageDirectory()+File.separator+"SingingStudio/"+songname+"/"+songname+"file.txt"); 
    //Read text from file 
    StringBuilder text = new StringBuilder(); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader(filematn)); 
     String line; 

     while ((line = br.readLine()) != null) { 
      text.append(line); 
      text.append('\n'); 
     } 
     br.close(); 
    } 
    catch (IOException e) { 
     //You'll need to add proper error handling here 
    } 
    String variable = text.toString(); 
    TextView show = (TextView) findViewById(R.id.preshow); 
    show.settext(variable); 

TextView показывает: \ u0020 \ uFEB3 \ uFEE8 \ uFB93 \ u0020 \ uFEBB \ uFE92 \ uFEEE \ u0631 \ u0020

Как я могу это исправить. спасибо

+2

Разберите его и преобразуйте Unicode. – zgc7009

ответ

0

Когда вы читаете в файле, обратные косы сбрасываются с предыдущим обратным слэшем. Обход этого не так прост, как кажется, но рассматривается в этом вопросе SO: How to replace \\u by \u in Java String

+0

спасибо. это работа. – user2962004

+0

Какой метод вы использовали для удаления обратных косых черт из любопытства? –

+0

Шаблон unicode = Pattern.compile ("\\\\ u ​​(. {4})"); Matcher matcher = unicode.matcher ("aaa \\ u2022bbb \\ u2014ccc"); StringBuffer sb = new StringBuffer(); while (matcher.find()) { int code = Integer.parseInt (matcher.group (1), 16); matcher.appendReplacement (sb, new String (Character.toChars (код))); } matcher.appendTail (sb); – user2962004

Смежные вопросы