如何将含SJIS编码的RTF字符串渲染为HTML?求Java/JS方案
解决SJIS编码RTF网页渲染的方案
Java服务端方案
Apache POI HWPF(推荐)
Apache POI的HWPF模块专门针对RTF和旧版Word文档处理,能完美识别SJIS编码的字符,同时完整保留RTF中的字体颜色、样式、段落对齐、字体族等格式:
- 操作步骤:
- 将数据库取出的SJIS编码RTF字符串,转换为
Shift_JIS编码的字节数组 - 用
ByteArrayInputStream包装字节数组,传入HWPFDocument加载RTF内容 - 初始化
WordToHtmlConverter并关联Document对象,调用processDocument方法完成格式转换 - 将生成的HTML字符串输出到网页,即可实现带完整格式的渲染
- 将数据库取出的SJIS编码RTF字符串,转换为
修复JEditorPane的问题(备选)
如果坚持使用JEditorPane,可针对性解决乱码和对齐问题:
- 乱码解决:将RTF字符串转为
Shift_JIS编码的字节流,设置JEditorPane的contentType为text/rtf; charset=Shift_JIS,再通过read方法加载字节流 - 对齐问题:JEditorPane默认HTML转换对部分RTF对齐标记支持不足,可自定义
EditorKit扩展,或结合POI的转换结果补充格式
JavaScript客户端方案
rtf.js浏览器端解析
rtf.js是纯JS的RTF解析库,支持多编码(包括SJIS),能在浏览器端直接解析RTF并生成带格式的HTML:
- 操作步骤:
- 将SJIS编码的RTF字符串转换为Uint8Array(对应SJIS编码的字节序列)
- 调用rtf.js的
parse方法处理字节数组,获取解析后的文档结构 - 利用库自带的HTML生成工具,将文档结构转为HTML字符串
- 将HTML插入到页面的DOM容器中完成渲染
TinyMCE富文本编辑器导入
TinyMCE支持RTF字符串导入功能,可正确识别SJIS编码:
- 操作步骤:
- 配置TinyMCE启用导入插件
- 调用
tinymce.activeEditor.importContent方法传入RTF字符串 - 从编辑器中导出生成的HTML,插入到页面指定位置渲染
内容的提问来源于stack exchange,提问作者I.H.
相关产品推荐
相关产品推荐

