我有一个场景,其中一些特殊字符以系统默认编码存储在数据库(sybase)中,我必须使用Java程序获取此数据并将其以UTF-8编码发送给第三方。
有一个前提条件,发送到第三方的数据不应超过定义的最大大小。由于转换为UTF-8后,一个字符可能会被2或3个字符替换,因此我的逻辑是在从数据库获取数据后,必须将其编码为UTF-8字符串,然后拆分该字符串。以下是我的观察结果:
当遇到任何特殊字符,例如中文或希腊字符或任何ASCII 256之上的特殊字符时,当我将其转换为UTF-8时,一个字符可能由多个字节表示。
那么我怎样才能确定转换是否正确?对于转换,我正在使用以下内容:
// 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");
但是,当我将这个新字符串输出到控制台时,特殊字符显示为?
。
所以我有一些疑问:
- 如果我的转换逻辑有误,那么我应该如何进行更正。
- 在将我的转换转换为UTF-8之后,我可以进行双重检查以确定我的转换是否正确吗?我的意思是,如果转换后的消息不可读,则说明转换存在问题,我假设发送给第三方的消息必须是可读的。
希望从所有专家那里得到一些观点。
如果需要更多信息,请告知我。