2015-01-22 4 views
1

Работа с веб-приложением, которое принимает все символы UTF-8, включая греческие символы, следующие строки, которые я хочу преобразовать в hex.
Ниже приведены разные цепочки языка, которые не работают в моем текущем кодеEncode/decode hex to utf-8 string

ЫЙБПАРОΕγκυκλοπαίδειαéaösGrößeGröße

Ниже приведены шестнадцатеричные преобразования с помощью Javascript функции, упомянутые ниже

42b41941141f41042041e3953b33ba3c53ba3bb3bf3c03b13af3b43b53b93b1e961f6734772c3192c2b6c3192c2178654772f6df65

Javas cript функция для преобразования строки выше проклясть

function encode(string) { 
    var str= ""; 
     var length = string.length;   
     for (var i = 0; i < length; i++){ 
      str+= string.charCodeAt(i).toString(16); 
      } 
     return str; 
} 

Здесь не дает какой-либо ошибки, чтобы преобразовать, но на стороне Java я не могу разобрать такую ​​строку, используемую следующий код Java для преобразования Hex

public String HexToString(String hex){ 

      StringBuilder finalString = new StringBuilder(); 
      StringBuilder tempString = new StringBuilder(); 

      for(int i=0; i<hex.length()-1; i+=2){     
       String output = hex.substring(i, (i + 2));    
       int decimal = Integer.parseInt(output, 16);    
       finalString.append((char)decimal);  
       tempString.append(decimal); 
      } 
     return finalString.toString(); 
    } 

Он выдает ошибку при разборе над шестнадцатеричной строкой, дающей исключение синтаксического анализа. Предложите мне решение

ответ

1

Javascript работает с 16-битными символами Юникода, поэтому charCodeAt может возвращать любое число в диапазоне от 0 до 65535. При закодировать его проклясть вы получите строки от 1 до 4 символов, и если вы просто сцепить эти , у другой стороны нет возможности узнать, какие символы были закодированы.

Вы можете обойти эту проблему путем добавления разделителей в закодированную строку:

function encode(string) { 
 
    return string.split("").map(function(c) { 
 
     return c.charCodeAt(0).toString(16); 
 
    }).join('-'); 
 
} 
 

 
alert(encode('größe Εγκυκλοπαίδεια 维'))

+0

gr8 Идея закодировать строку в яваскрипта стороны. Точно так же я сталкиваюсь с проблемой на стороне Java. Как выполнить синтаксический анализ/преобразование закодированной строки. –

+0

@RahulP: Я не знаю Java, но, полагаю, у нее есть функция «split»? – georg