Tag: 字符编码

将byte 编码为String

Heyho, 我想将字节数据(可以是任何东西)转换为String。 我的问题是,用UTF-8编码字节数据是否“安全”,例如: String s1 = new String(data, “UTF-8”); 或者使用base64: String s2 = Base64.encodeToString(data, false); //migbase64 我只是担心使用第一种方法会产生负面影响。 我的意思是两个变体都可以工作,但是s1可以包含UTF-8字符集的任何字符, s2只使用“可读”字符。 我只是不确定它是否真的需要使用base64。 基本上我只需要创建一个String,通过网络发送它并再次接收它。 (在我的情况下没有别的办法:/) 问题只是关于消极的副作用 ,而不是如果可能的话!

如何将JSF消息编码设置为UTF-8?

我有一些用户输入validation的代码 它工作正常,但如果用户输入无效,我需要显示一些UTF-8消息, 我怎样才能做到这一点?

我怎么才能知道我的String包含变音符号?

例如 – text = Československá obchodní banka; text string contains diacritics like Č , á etc. 我想写一个函数,我将传递这个字符串“Československáobchodníbanka”, function will return true if string contains diacritics else false ,则function will return true if string contains diacritics else false 。 我必须处理变音符号和字符串,其中包含不分别落入Az或az范围的字符。 1) If String contains diacritics then I have to do some XXXXXX on it. 2) If […]

Google应用引擎数据存储区字符串编码问题

您好我正在使用Google App Engine进行我正在进行的项目,我需要存储一些字符串。 我正在使用Java和JDOHelper.getPersistenceManagerFactory(“transactions-optional”) 在我的计算机上进行调试时,一切正常,字符串正确保存。 但是当我将它上传到谷歌应用程序引擎时,我保存的所有字符串都会将其unicode字符替换为问号(?)。 如果我转到项目页面上的DataViewer,我可以看到字符串实际上是用问号保存的。 就像我说的,当在我的电脑上运行时,它运行正常。 有谁知道我应该怎么做?

Charset.defaultCharset()在JDK1.7和JDK 1.6下得到不同的结果

我正在测试我的应用程序的i18n兼容性。 我有一个英文版的Windows 7,这意味着系统的显示语言是英语。 我将系统区域设置为非unicode应用程序的中文。 我的应用程序在导出jdk1.6下的中文字符的Html文件时遇到问题,但在jdk1.7下运行时工作正常。 我调试它,发现直接原因是Charset.defaultCharset()返回了不同的值。 在jdk1.7下, Charset.defaultCharset()返回GBK ,这是中文的charset。 在jdk1.6下, Charset.defaultCharset()返回window_1252 ,这是拉丁语的charset。 我知道问题可以通过代码字符集来解决,比如utf-8 。 但我想知道为什么Charset.defaultCharset()在JDK1.7和JDK 1.6下返回不同的值。

如何从CharsetDecoder的.decode()生成UnmappableCharacterException?

[注意:经过大量的游戏后问题基本上重新编辑] 在Java中,您有Charset ,定义了一个字符编码。 从Charset ,您可以获得两个对象: 一个CharsetEncoder ,用于将char序列转换为byte序列; CharsetDecoder ,用于将byte序列转换为char序列。 这两个类都定义了以下方法: .onUnmappableCharacter()和.onMalformedInput() 。 如果你告诉他们每一个CodingErrorAction.REPORT他们将抛出这两个exception中的任何一个: UnmappableCharacterException和MalformedInputException 。 使用CharsetEncoder ,我可以生成它们: 用一个包含两个高代理的CharBuffer提供它 – > MalformedInputException ; 使用包含编码无法表示的char (或char序列)的CharBuffer提供它: UnmappableCharacterException 。 使用CharsetDecoder : 用非法字节序列提供它: MalformedInputException – 很容易做到; UnmappableCharacterException – >怎么样? 尽管我所有的研究,我都无法做到。 所有这一切尽管与CharsetDecoder一起玩了很多 。 我找不到Charset和字节序列的组合能够产生这个错误…… 有没有?

如何用西里尔文路径阅读文件

其实我有下一个代码: String f = LauncherFrame.class.getProtectionDomain().getCodeSource().getLocation().getPath(); // path to launcher java.lang.System.out.println(f); String launcherHash = “”; try{ MessageDigest md5 = MessageDigest.getInstance(“MD5”); launcherHash = calculateHash(md5, f); }catch (Exception e) { java.lang.System.out.println(e){ return; } calculateHash函数: public static String calculateHash(MessageDigest algorithm,String fileName) throws Exception{ FileInputStream fis = new FileInputStream(fileName); BufferedInputStream bis = new BufferedInputStream(fis); DigestInputStream dis = new DigestInputStream(bis, algorithm); […]

servlet是否知道使用http-equiv指定的已发送表单的编码?

servlet是否知道使用http-equiv指定的已发送表单的编码? 当我使用http-equiv指定POSTed表单的编码时: 然后在servlet我使用方法, request.getCharacterEncoding()我得到了null ! 那么,有没有办法可以告诉服务器我在一些字符编码中编码数据?

有没有办法为Java的Charset名称添加别名

我得到一个exception,埋没在第三方库中,有这样的消息: java.io.UnsupportedEncodingException:BIG-5 我认为这是因为Java没有为java.nio.charset.Charset定义这个名称。 Charset.forName(“big5”)很好,但Charset.forName(“big-5”)抛出exception。 (所有这些名称似乎都不区分大小写。) 这与“utf-8”不同,后者有一些别名可以更宽容。 例如, Charset.forName(“utf8” )和Charset.forName(“utf-8”)可以正常工作。 问题:有没有办法添加别名,以便“big-5”映射到“big5”?

Java控制台无法正确读取中文字符

我正在努力让Eclipse正确阅读中文字符,我不确定我可能在哪里出错。 具体来说,在从控制台读取一串中文(简体或繁体)并输出它之间的某处,它会出现乱码。 即使输出大量混合文本(英文/中文字符),它似乎只会改变汉字的外观。 我把它剪切到下面的测试示例,并明确地用我认为在每个阶段发生的事情注释它 – 请注意我是一名学生,非常想确认我的理解(或其他):) public static void main(String[] args) { try { boolean isRunning = true; //Raw flow of input data from the console InputStream inputStream = System.in; //Allows you to read the stream, using either the default character encoding, else the specified encoding; InputStreamReader inputStreamReader = new InputStreamReader(inputStream, “UTF-8”); //Adds functionality for […]