Интересно, может ли кто-нибудь помочь, у меня возникли трудности с отправкой символов UTF-8 в SagePay. База данных представляет собой MySQL с базой данных charset utf8 и Database collation utf8_general_ci. Строка подключения базы данных использует useUnicode = true & characterEncoding = UTF-8, а страница jsp правильно закодирована как <% @ page pageEncoding = "UTF-8" contentType = "text/html; charset = UTF-8"%>Ошибка кодирования Java UTF-8
Все данные, размещенные в базе данных хранится в UTF-8, все данные запрошенные представлен как UTF-8, но когда строка кодируется следующим образом:
crypt = Base64Coder.encodeString(encXor(strPost));
, а затем отправил в SagePay, они получают искаженную строку с точки зрения того, где обнаруживается международный характер. Если в строке нет международных символов, сообщение в SapePay будет успешным.
Мои вопросы, если запрашиваемые данные - это UTF-8, почему шифрование или кодирование перед публикацией не UTF-8, а также как я могу заставить кодировку UTF-8 или возможную силу ISO-8859-1 отправлять в SagePay, Конечно, я предпочел бы сохранить UTF-8, но изо всех сил пытался найти решение.
Функция Xor выглядит следующим образом:
public static String encXor(String s)
{
String s1 = "password";
String s2 = null;
byte abyte0[] = s.getBytes();
byte abyte1[] = s1.getBytes();
int i = 0;
int j = abyte1.length;
ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(abyte0.length);
for(int k = 0; k < abyte0.length; k++)
{
byte byte0 = abyte0[k];
byte byte1 = abyte1[i];
byte byte2 = (byte)(byte0^byte1);
if(i < j - 1)
i++;
else
i = 0;
bytearrayoutputstream.write(byte2);
}
try
{
bytearrayoutputstream.flush();
s2 = bytearrayoutputstream.toString();
bytearrayoutputstream.close();
bytearrayoutputstream = null;
}
catch(IOException ioexception) { }
return s2;
}
Любая помощь будет высоко ценится :-)
Спасибо, я попытался это, но при компиляции класса я получаю ошибку незарегистрированного исключения java.io.UnsuportedEncodingException должно быть поймано или объявленным быть выброшено. – iggyweb
Просмотреть последнюю версию под редакцией @artbristol. – Henry
@iggyweb: вам нужно поймать исключение; он никогда не будет выброшен, если у вас нет опечатки в вашем коде. –