Tag: 字符编码

Java:平台在不同平台上的默认字符集?

一些遗留代码依赖于平台的默认字符集进行翻译。 对于“西方世界”中的Windows和Linux安装,我知道这意味着什么。 但是考虑到俄罗斯或亚洲平台,我完全不确定他们平台的默认字符集是什么(只是UTF-16?)。 因此,我想知道在执行以下代码行时我会得到什么: System.out.println(“Default Charset=” + Charset.defaultCharset()); 编辑:我不想在这里讨论charsets的问题以及它们与unicode的区别。 我只是想收集哪些操作系统会导致什么特定的字符集。 请仅发布具体值!

在Windows中更改Tomcat的Charset.defaultCharset

我在Windows 7中使用tomcat 6.0.32。在一个非常简单的servlet中,在init方法中,我正在打印: System.out.println(Charset.defaultCharset()); 输出是: windows-1253 据我所知,这是tomcat在JVM中的启动方式,因为我在独立的java类中打印相同的内容,并将“UTF8”作为响应。 那么,我怎样才能将其更改为UTF-8? 谢谢

为什么POST不尊重charset,但是AJAX请求呢? tomcat 6

我有一个基于tomcat的应用程序,需要提交一个能够处理utf-8字符的表单。 通过ajax提交时,数据从utf-8中的getParameter()正确返回。 通过表单发布提交时,数据将从iso-8859-1中的getParameter()返回。 我使用了fiddler,并确定了请求的唯一区别,就是在ajax调用中将charset = utf-8附加到Content-Type头的末尾(正如预期的那样,因为我明确地发送了内容类型)。 来自ajax的ContentType:“application / x-www-form-urlencoded; charset = utf-8” 来自表单的ContentType:“application / x-www-form-urlencoded” 我有以下设置: ajax post(正确输出chars): $.ajax( { type : “POST”, url : “blah”, async : false, contentType: “application/x-www-form-urlencoded; charset=utf-8”, data : data, success : function(data) { } }); 表格post(在iso中输出字符) xml声明: 文档类型: 元标记: jvm参数: -Dfile.encoding=UTF-8 我也尝试过使用request.setCharacterEncoding(“UTF-8”); 但似乎tomcat只是忽略了它。 我没有使用RequestDumper阀门。 根据我的阅读,POST数据编码主要取决于表单所在的页面编码。 据我所知,我的页面在utf-8中正确编码。 此页面中的示例JSP正常工作。 它只使用setCharacterEncoding(“UTF-8”); 并回复您发布的数据。 […]

如何在从多种语言中读取数据时避免使用垃圾/垃圾字符?

我正在解析来自10多种不同语言的RSS新闻源。 所有解析都是在java中完成的,数据存储在MySQL中,然后我用PHP编写的API响应客户端。 当我读取数据时,我经常遇到垃圾字符。 我试过了什么: 我已将MySQL配置为存储utf-8数据。 我的db,table甚至列都有UTF8作为它们的默认字符集。 连接我的数据库时,我将字符集结果设置为utf-8 当我手动运行jar文件以插入数据时,角色看起来很好。 但是当我为同一个jar文件设置一个cronjob时,我又开始面对这个问题了。 在英语中,我特别面对像这样的问题,在其他本地语言中,这个角色看起来完全是垃圾,我甚至无法识别单个角色。 有什么我想念的吗? 样本垃圾字符: 古吉拉特语 :“રેàªààªμેàªàà«àªàààààà«àªàà€ààààªààààààààààààààààààààààààààààààààà««àà€« ¤à«<મળશેàªμળતર!“ Malyalam :“à’ààμ‡à’ªàμà’ªà’¾à’³à’¿à’²àμ‡à’ààμà’àààààààààààààààààààààààààà’àà’àà ‘°à’•àμà’•àμà’ààμà’±à’šàμà’šàμ“ 英语 :银行局局扩大金融部门PSU的范围

UTF-8文本(印地语)未显示在浏览器窗口或Eclipse控制台上

我必须在浏览器屏幕上以印地语(或任何区域语言)显示文本。 我将从数据库中获取此文本。 为此,我从一个非常基本的层面开始,具体如下: String escapedStr = “\\u0905\\u092d\\u0940 \\u0938\\u092e\\u092f \\u0939\\u0948 \\u091c\\u0928\\u0924\\u093e”; String hindiText = StringEscapeUtils.unescapeJava(escapedStr); System.out.println(hindiText); return hindiText; 我能够在变量hindiText完美地获得印地语文本。 但是当我在eclipse控制台或浏览器屏幕上打印时,我只得到???? ?? ?? ???? ?? ?? 我将浏览器的默认字符编码以及我的eclipse控制台设置为UNICODE(UTF-8)。 但仍然没有成功。 谁能帮我解决这个问题? 我错过了什么设置? 只是fyi – 我能够在浏览器中打开印地文网站。 所以语言设置不是问题。 编辑 当我使用JSP文件查看视图时,我已将以下内容添加到我的web.xml以便全局设置字符编码。 参考: 跟着这个 *.jsp UTF-8 但仍然没有成功!

Java编译平台文件编码问题

这是我发布堆栈溢出的第一篇文章。 我从1998年开始做Java,所以我不是初学者。 最近我遇到了一个我记不起来的文件字符编码问题。 在不同平台上运行时,必须了解文本文件的字符编码和编写正确处理编码的代码是很常见的。 但我发现的问题是由与执行平台不同的平台上的编译引起的。 这完全出乎意料,因为根据我的经验,当javac创建一个类文件时,重要的参数是java源和目标params,以及进行编译的JDK的版本。 我的情况是,在Mac OS X上使用JDK 1.6.0_22编译的类与在Linux上运行时使用1.6.0_23-b05编译的类不同,在Mac OS X上运行时。指定的源和目标是1.4。 使用PrintStream println方法将在内存中编码为ISO-8859_1的String写入磁盘。 根据Java代码编译的平​​台,字符串的编写方式不同。 这导致了一个错误。 该错误的修复是在编写和读取文件时明确指定文件编码。 让我感到惊讶的是,行为的不同取决于编译类的位置,而不是运行类的平台。 我非常熟悉Java代码在不同平台上运行时的行为方式。 但是,当在不同平台上编译的相同代码在同一平台上以不同方式运行时,它有点可怕。 有没有人遇到过这个具体问题? 对于在没有明确指定字符编码的情况下读取和写入字符串到文件的任何Java代码,似乎都不适用。 这种情况经常发生多少次? 谢谢, Richard Brewster http://rabbitsoftware.com

如何将具有空终止字符的字节数组转换为Java中的String?

如何从字节数组创建String对象 byte arr[MAX_SIZE]; // Java 其中一个数组元素是一个C null终止字节? 它就像打电话一样简单 String str = new String( arr ); String构造函数是否知道自动停止在null终止字符处? 空字节后的任何字节都是(可能)垃圾字符,我不想包含在字符串中。 解析包含未知长度字段的字节数组的最后一个响应建议循环遍历数组并手动查找空终止字符,但我想知道String构造函数是否会自动执行此操作。 我还假设系统的默认字符集将用于所有目的。

在Tomcat中自动检测URI编码

我有一个运行Apache Tomcat 6.x的实例,我想让它解释传入URL的字符集比默认行为更加智能。 特别是,我想实现以下映射: So%DFe => Soße So%C3%9Fe => Soße So%DF%C3%9F => (error) 我想要的bevavior可以被描述为“尝试将字节流解码为UTF-8,如果它不起作用则假设ISO-8859-1”。 在这种情况下,仅使用URIEncoding配置不起作用。 那么如何配置Tomcat以我想要的方式对请求进行编码? 我可能必须编写一个filter来接收请求(尤其是查询字符串)并将其重新编码为参数。 这是自然的方式吗?

Java Runtime exec()无法正确转义字符

这可能已经在之前得到了解答,但那是关于unicode的,我不认为这是unicode(它是ASCII,所以……)。 当我在终端中执行此操作时,没有任何问题 vboxmanage setextradata “Test Machine” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort” 2222 但是当我在Java中使用以下内容时 Runtime.getRuntime().exec(“vboxmanage setextradata \”Test Machine\” \”VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort\” 2222″); 它返回一个错误:unregistered vm’“TestMachine”’ 其中包含空格的参数(如Test \ Machine)也是如此,然后它不会逃避空间。 现在我认为这与字符编码有关,但我没有看到任何设置o_O的选项

无法在glassfish 3.1中将字符集从ISO-8859-1更改为UTF-8

我在将Web应用程序响应中的字符集从ISO-8859-1(默认)更改为UTF-8时遇到问题。 我已经将VM选项-Dfile.encoding=UTF-8到JVM选项中 但是,我仍然得到以下HTTP标头作为来自glassfish的响应: Content-Type: […;charset=ISO-8859-1] Server: [GlassFish Server Open Source Edition 3.1] 非常感谢您的帮助/想法。