java中如何将字符转换成rtf格式
发布网友
发布时间:2022-07-26 04:39
我来回答
共1个回答
热心网友
时间:2023-10-17 01:37
int inext=0;//用来判断中文 编码出现 第一次出现为0 第二次出现为1 add by wde
public String strToRtf(String content){
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
byte[] bs = content.getBytes();
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
/*2009-7-5 add by wde 增加中文支持
*思路:通过getBytes获取的中文的assii小于0,根据rtf中文的的编码
* 所以只需要在中文的2个编码 第一个编码前加 第二个编码后加
* 加了一个变量inext 用来判断中文的assii 前一个和后一个。
* 这样在rtf中文的乱码就可以解决了。
*/
if(bs[i]>0){
sb.append("\\'");
}else{
if(inext==0){
//通过写字板创建的rtf模板 add by wde
//sb.append("\\lang2052\\f1");
//通过WPS2009创建的rtf模板 add by wde
// sb.append("\\lang1033 \\langnp1033 \\langfe2052 \\langfenp2052 \\cf1");
//通过MS word创建的rtf模板 add by wde
sb.append("\\loch\\af2\\hich\\af2\\dbch\\f31505");
sb.append("\\'");
inext=1;
}else{
sb.append("\\'");
}
}
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
if(bs[i]<0&&inext==1){
// 通过写字板创建的rtf模板 add by wde
//sb.append("\\lang1033\\f0");
// 通过WPS2009创建的rtf模板 add by wde
//sb.append(" \\lang1033\\langnp1033 \\langfe2052\\langfenp2052 \\cf1");
// 通过MS word创建的rtf模板 add by wde
sb.append("\\hich\\af2\\dbch\\af31505\\loch\\f2");
inext=0;
}
}
return sb.toString();
}