我正在使用下面的代码从SVG文件创建PNG,并将其写入Servlet输出流。SVG文件的轴名中包含UTF-8(日语)字符。
ServletOutputStream out = response.getOutputStream();
InputStream svgFileStream = new FileInputStream(svgFile);
TranscoderInput inputSvgImage = new TranscoderInput(svgFileStream);
PNGTranscoder converter = new PNGTranscoder();
TranscoderOutput outputPngImage = new TranscoderOutput(out);
converter.transcode(inputSvgImage, outputPngImage);
上面的代码在我的本地程序中运行良好,但是当我上传到服务器时,它显示的是正方形而不是字符。当有英文字符而不是日文字符时,它在本地和服务器上都能正常工作。
你能告诉我你是否面临同样的问题。会不会和Tomcat有关?
我已经从服务器上检查了SVG文件,UTF-8字符在其中可见。我还用“UTF-8”尝试了InputStreamReader而不是InputStream,但没有奏效。
根据找到的一个响应,我尝试在TranscoderOutput中使用“UTF-8”Write而不是ServletOutputStream,但它没有创建任何映像。
谢谢
只要它在您的本地文件上正常工作并且您提供的是一个png映像,它就必须独立于应用服务器的编码配置,而且您的svg文件本身也是正确编码的,我不认为这是一个编码问题。
@Eugene K.是的,有一种可能是某些java类隐式地使用了os默认的区域设置,但我不能用问题中给出的相同代码再现问题,尽管我没有日语区域设置。IMHO很可能是服务器安装了一些缺失的字体。
它可能不是一种优雅的方式,也不与Java相关,但作为一种解决方案,如果您有机会以某种方式编辑源svg文件(如果需要的话,它也可以通过一些字符串操作来动态地编辑),您可以提供包含日语字符的字体,并从servlet中提供它。然后将这些添加到svg文件中,并为文本指定字体系列:
<defs>
<style type="text/css">
<![CDATA[
@font-face {
font-family: Somefont;
src: url('http://localhost:8080/Somefont.ttf');
}
]]>
</style>
</defs>
<text font-family="Somefont" font-size="40" fill="blue">Text for test!</text>
希望有帮助!
问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即
我将python3和Nmap用于smb-os发现。nse脚本获取有关网络中endpoint的详细信息。特别是主机名。当主机名包含非ascii字符时,我会收到类似utf-8的字符串,如下所示: 我想要的是将此字符串转换为真正的utf-8(编码或解码,没关系),如下所示: 我尝试了以下方法,但没有成功: 据我所知,问题在于脚本的输出以解码python字符串的形式给我utf-8编码字符。 可以自动转换吗
问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str
问题内容: 我的数据采用以下格式:或类似。我想将它们转换为UTF-8(原始字符是好和我)。我该怎么做? 问题答案: 这可能是最简单的解决方案。
问题内容: 我有一个带有“ñ”字符的字符串,并且我有一些问题。我需要将此字符串编码为UTF-8编码。我已经通过这种方式尝试过,但是没有用: 如何将该字符串编码为utf-8? 问题答案: Java中的对象使用无法修改的UTF-16编码。 唯一可以使用不同编码的是。因此,如果你需要UTF-8数据,则需要一个。如果你有一个包含意外数据的,则问题出在较早的地方,该错误地将一些二进制数据错误地转换为a (即
我有一个从第三方应用程序收到的字符串,我希望在我的Windows界面上使用C#以任何语言正确显示它。 由于编码不正确,我的字符串中有一段在西班牙语中如下所示: AcciÃn 然而它应该看起来像这样: 阿克松 根据这个问题的答案:如何知道C#中的字符串编码,我接收到的编码应该已经在UTF-8中出现了,但它是在编码时读取的。默认值(可能是ANSI?)。 我试图将这个字符串转换成真正的UTF-8,但问题