我有一个场景,其中一些特殊字符存储在系统默认编码的数据库(sybase)中,我必须获取此数据并使用Java程序将其发送到UTF-8编码的第三方.
前提条件是发送给第三方的数据不应超过定义的最大大小.由于在转换为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");
Run Code Online (Sandbox Code Playgroud)
但是当我将这个newString输出到控制台时,我得到?
了特殊字符.
所以我有些疑惑:
希望得到所有专家的一些观点.
如果我方需要进一步的信息,请告诉我.
Java字符串是unicode的,但并不是所有的java组件都支持完整的unicode字符串,尤其是AWT组件和轻量级的swing组件。因此,您可能拥有完美的字符串,但在控制台输出中却出现了垃圾。
归档时间: |
|
查看次数: |
26612 次 |
最近记录: |