rtf乱码解决办法

首先,阐述下rtf,富文本格式文档,目前常用来做模板;

我遇到的问题是rtf中替换后的文本显示是正常的,rtf直接转pdf就不正常了,通过notpad++ 打开后发现rtf本身内容编码是我没有见过的(查资料说时ansi,具体我也不晓得了),我替换后的则是中文显示,这样转换后中文全部乱码;

解决办法如下,直接贴util类分享

package com.ywlqi.util;public class StringToRtfUtil{public static String chineseStrTortf(String content){StringBuffer sb = new StringBuffer("");if (content == null) return null;for (char c : content.toCharArray()) {if(isChinese(c)){System.out.println(c);sb.append(strToRtf(String.valueOf(c)));}else{sb.append(c);}}return sb.toString();}public static void main(String[] args) {System.out.println(chineseStrTortf("1)在合同有效期内,乙方为甲方提供简历库下载的用户名与初始密码"));}public static byte[] charToByte(char c) { byte[] b = new byte[2]; b[0] = (byte) ((c & 0xFF00) >> 8); b[1] = (byte) (c & 0xFF); return b; }public static boolean isChinese(char c) {
//          return c >= 0x4E00 &&  c <= 0x9FA5;// 根据字节码判断
          Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {return true;}return false;}public static String strToRtf(String content) {StringBuffer sb = new StringBuffer("");try {char[] digital = "0123456789ABCDEF".toCharArray();byte[] bs = null;bs = content.getBytes("GB2312");int bit;for (int i = 0; i < bs.length; i++) {bit = (bs[i] & 0x0f0) >> 4;sb.append("\\'");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}public static String byteToRtf(byte[] bs) {StringBuffer sb = new StringBuffer("");try {char[] digital = "0123456789ABCDEF".toCharArray();int bit;for (int i = 0; i < bs.length; i++) {bit = (bs[i] & 0x0f0) >> 4;sb.append("\\'");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}
}

在模板替换的时候使用

chineseStrTortf或者strToRtf即可,两者区别在于,你是把所有字符串转成rtf编码还是仅转换中文
rtfTemplate.put("value_taxAddr", StringToRtfUtil.strToRtf(taxAddr));

这样rtf文档显示正常,pdf也是正常的

转载于:https://www.cnblogs.com/bing521meng/p/6536704.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为鸿蒙山海,华为包圆了整部《山海经》,鸿蒙是何意?还有青龙白虎朱雀玄武?...

华为已经申请注册“华为鸿蒙”商标并标注该商品可用于操作系统程序鸿蒙一个自带书香气的名字一听就是文化人&#xff01;一听就是中华文化传承人&#xff01;那么鸿蒙是啥意思鸿蒙就是一团气不是普通的气体传说盘古在昆仑山开天辟地之前世界是一团混沌的元气这种自然的元气叫做…

ASP.NET MVC5使用Area区域

转载&#xff1a;http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块&#xff0c;这些功能模块可以用Area&#xff08;中文翻译为区域&#xff09;把它们分离开来&#xff0c;比如&#xff1a;Admin&#xff0c;Customer&#xff0c…

html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?

怎样用快捷键显示最小化的窗口在键盘上同时按下WinD 键&#xff0c;可以最小化所有窗口。在键盘上再次同时按下WinD 键&#xff0c;可以还原步骤1最小化的所有窗口。在键盘上同时按下WindowsM键&#xff0c;可以最小化所有窗口。在键盘上同时按下WindowsShiftM键。电脑窗口最小…

华为鸿蒙用户体验计划怎样关闭,华为用户要注意,手机关闭这3个“默认选项”,还能流畅再用2年...

华为用户要注意&#xff0c;手机关闭这3个“默认选项”&#xff0c;还能流畅再用2年众所周知&#xff0c;我们在使用手机的时候&#xff0c;经常会有这样的感触&#xff0c;就是手机明明才刚买没多久&#xff0c;使用起来却相当的卡顿&#xff0c;这还是为什么&#xff1f;手机…

html 像素跟百分比,html – 将百分比宽度与边距(以像素为单位)组合起来

我有一个包含多个项目的页面,其宽度为33.33&#xff05;,以填充页面的整个宽度.但是,我想在项目之间添加20px的边距(垂直和水平,但垂直是这里的问题),但只是在连续的每个第1和第2项的右边添加20px边距,销毁整个页面. (从小提琴中删除已注释掉的CSS,看看我的意思).现在,问题是&a…

GCC命令

一. 常用编译命令选项 源程序test.c 1. 无选项编译链接用法&#xff1a;#gcc test.c作用&#xff1a;将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件&#xff0c;默认输出为a.out。 2. 选项 -o用法&#xff1a;#gcc test.c -o test作用&#xff1a;将tes…

html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...

【实例简介】【实例截图】【核心代码】jQuery手机端收货地址选择代码 - 站长素材默认调用所在地区&#xff1a;设置默认值所在地区&#xff1a;/*** 默认调用*/!function () {var $target $(#J_Address);$target.citySelect();$target.on(click, function (event) {event.stop…

内连接、左外连接、右外连接、交叉连接区别

在之前&#xff0c;我对MSSQL中的内连接和外连接所得出的数据集不是很清楚。这几天重新温习了一下SQL的书本&#xff0c;现在的思路应该是很清楚了&#xff0c;现在把自己的理解发出来给大家温习下。希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助。&#xff08;发这么…

winform数据传递到html,C#下winform和JS的互相调用和传参(webbrowser)

不多说&#xff0c;直接上代码&#xff0c;winform下button1调用js函数&#xff0c;从html页面获取值&#xff0c;然后JS调用WINFORM的函数&#xff0c;传送获取到的值到winform并通过messagebox的方法show出来。一步到位&#xff0c; winform调用JS函数 和JS调用winform函数的…

xcode开发html5工具,5个Xcode开发调试技巧

1.Enable NSZombie Objects(开启僵尸对象)Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧。这个技巧非常非常容易追踪到重复释放的问题。该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址。怎么开启僵尸对象呢&#xff1f;首先打开“Edit Sc…

求1-n之内的素数

#include<stdio.h>#include<math.h>int main(){ int n,i,j,k; scanf("%d",&n); //输入范围n for(i2;i<n;i) { ksqrt(i); for(j2;j<sqrt(i);j) { if(i%j0){ //如果i…

计算机基础和操作系统基础知识测试,计算机基础知识和操作系统.doc

全国计算机等级考试精讲精解精练——二级C第1章 计算机基础知识与操作系统 PAGE 2 PAGE 33技术资料共享知识第1章计算机基础知识与操作系统大纲要求了解计算机的有关概念及软硬件系统的组成&#xff1b;了解数据基本单位&#xff0c;掌握计算机常用数制的转换方法&#xff1b;具…

Unity 协程深入解析与原理

先来直接放一段代码 1 using System.Collections;2 using System.Collections.Generic;3 using UnityEngine;4 5 public class CoroutineTest : MonoBehaviour6 {7 8 void Start()9 { 10 Debug.Log("Start Begin"); 11 12 CustomCoroutine …

计算机操作员初级 第1单元0202微型计算机基本操作 教学大纲,计算机操作员教学大纲...

计算机操作员培训教学大纲一、课程的地位、目的与任务计算机应用基础课程是计算机操作员必修课。通过学习&#xff0c;测试学员的计算机基础知识&#xff0c;基本操作和使用计算机的能力&#xff1b;它是学员学习计算机的入门课程&#xff0c;提高学员的综合学习的能力。二、教…

晓庄学院计算机科学分数,南京晓庄学院计算机单招分数

技校网专门为您推荐的类似问题答案问题1&#xff1a;南京晓庄学院的计算机专业晓庄排名太低计算机实力也弱 你的分这么高 上了浪费 建议上南京林业大学或其它符合等级的外省一流学校问题2&#xff1a;有南京晓庄学院 行知学院 计算机专业的学生吗, 这个学校如何你好啊&#xff…

NAT协议详解

NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是将IP数据报头中的IP地址转换为另一个IP地址的过程。在实际应用中&#xff0c;NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私网IP地址的方式&#x…

[Design-Pattern]工厂模式

Java版本 1 package interfaces;2 3 interface Service {4 void method1();5 void method2();6 } 7 8 interface ServiceFactory { 9 Service getService(); 10 } 11 12 class Implementation1 implements Service { 13 Implementation1() {} 14 public void method1…

计算机应用基础文字处理软件应用职高PPT,《计算机应用基础》职高2010修订版_教(学)案...

《计算机应用基础》职高2010修订版_教(学)案 (93页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;39.9 积分&#xfeff;. .《计算机应用基础》职高2010修订版 教案第一章 计算机基础知识第二章 中文…

快速排序【记录一下代码】

本文仅用作学习记录&#xff0c;大神勿喷O(∩_∩)O~ 代码一、百度百科C语言版本代码,参考数据结构p274(清华大学出版社&#xff0c;严蔚敏) 1 void Qsort1(int a[], int low, int high)//百度百科C语言版本代码 2 {/*参考数据结构p274(清华大学出版社&#xff0c;严蔚敏)*/3 …

计算机图学测试题及答案,《计算机图形学》练习测试题及参考答案

A 29、下列有关平面几何投影的叙述语句中&#xff0c;正确的论述为( ) A) 在平面几何投影中&#xff0c;若投影中心移到距离投影面无穷远处&#xff0c;则成为平行投影&#xff1b; B) 透视投影与平行投影相比&#xff0c;视觉效果更有真实感&#xff0c;而且能真实地反映物体的…