У меня есть сценарий, в котором некоторые специальные символы хранятся в базе данных (sybase) в системной кодировке по умолчанию, и мне нужно получить эти данные и отправить их стороннему пользователю в кодировке UTF-8 с помощью программы на Java.
Существует предварительное условие, что данные, отправляемые третьей стороне, не должны превышать определенный максимальный размер.Поскольку после преобразования в UTF-8 символ может быть заменен на 2 или 3 символа, моя логика подсказывает, что после получения данных из базы данных я должен кодировать их в строку UTF-8, а затем разбивать строку.Ниже приведены мои наблюдения:
Когда встречается любой специальный символ, такой как китайские или греческие символы или любой специальный символ> ASCII 256, и когда я конвертирую его в UTF-8, один символ может быть представлен болеечем 1 байт.
Так как я могу быть уверен, что преобразование правильное?Для преобразования я использую следующее
// storing the data from database into string
string s = getdata from the database;
// converting all the data in byte array utf8 encoding
byte [] b = s.getBytes("UTF-8");
// creating a new string as my split logic is based on the string format
String newString = new String(b,"UTF-8");
Но когда я вывожу эту newString на консоль, я получу ?
для специальных символов.
Так что у меня есть некоторые сомнения:
- Если моя логика преобразования неверна, то как я могу ее исправить.
- После выполнения моего преобразования в UTF-8, могу ли я проверить еще раз, в порядке ли мое преобразование?Я имею в виду, что это правильное сообщение, которое должно быть отправлено третьей стороне, я предполагаю, что, если сообщение не читается пользователем после преобразования, тогда есть некоторая проблема с преобразованием.
БудетХотелось бы получить некоторые точки зрения от всех экспертов.
Пожалуйста, дайте мне знать, если какая-либо дополнительная информация необходима с моей стороны.