将希腊字母放入java中的rtf编辑器内容中,显示问号

时间:2016-01-07 21:59:00

标签: javascript java html decode rtf

我正在使用rtf编辑器向用户显示内容。内容使用数据库值组成,有时包含希腊字母。 最初,它们显示为问号? ? ? ?而非Γ γ Ψ ψ。 在使用来自CONTENTS和使用JavaScript的显示使用CONTENT.getBytes();将这些内容作为CONTENT.getBytes("UTF8");response.getOutPutStream编辑为bytearraystream时,将document.myobj.HttpOpenFileFromStream(contents passed through earlier in response) 更改为Γ γ Ψ ψ

Γ γ Ψ ψ

任何普通文本内容在编辑器中都显示正常,但如果有Γ γ Ψ ψ等希腊字母,则在编辑器中显示为Γ γ Ψ ψ。 为了仔细检查,我在放入html页面之前打印了内容,它显示了所需的字符{{1}}但是当它们在RTF编辑器的UI中显示时,它们变为{{1}}。有人可以帮我弄这个吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

RTF无法正常工作。 RTF文件只能包含7位ASCII字符(这是名称的T [ext]部分的一部分),但它们可以通过两种基于文本的编码之一来表示其他字符。 The Wikipedia article on RTF提供了详细信息:

  

字符转义有两种类型:代码页转义,以及从RTF 1.5开始,Unicode转义。 [...]对于Unicode转义,使用控制字\ u,后跟16位带符号十进制整数,给出Unicode UTF-16代码单元号。为了没有Unicode支持的程序的好处,必须在指定的代码页中跟随此字符的最近表示。例如,\ u1576?将给出阿拉伯字母bā'ب,指明没有Unicode支持的旧程序应该将其作为问号呈现。

因此,字符ΓγΨψ的一个适当的RTF编码将是:

\u915? \u947? \u936? \u968?

当然,任何特定的RTF 软件是否正确处理此类转义序列是一个完全不同的问题。

答案 1 :(得分:0)

谢谢@John。它起作用这是我的代码。

if (ascii <= 128) { copyBuffer.append(ch); } else { copyBuffer.append("\\u"+ascii+"?"); }