Tag: unicode

替换Unicode控制字符

我需要在Java中替换字符串中的所有特殊控制字符。 我想问谷歌地图API v3,谷歌似乎并不喜欢这些字符。 示例: http : //www.google.com/maps/api/geocode/json?sendor = false&address = NEWS%20YO​​RK%C2%8F 此URL包含以下字符: http : //www.fileformat.info/info/unicode/char/008f/index.htm 所以我收到了一些数据,我需要对这些数据进行地理编码。 我知道有些角色不会通过地理编码,但我不知道确切的列表。 我无法找到有关此问题的任何文档,因此我认为Google不喜欢的字符列表就是这个: http : //www.fileformat.info/info/unicode/category/Cc/list.htm 是否有任何已构建的函数来摆脱这些字符,或者我必须构建一个新的,逐个替换? 还是有一个很好的正则表达式完成工作? 有人知道谷歌不喜欢哪个角色列表? 编辑:Google为此创建了一个网页: https://developers.google.com/maps/documentation/webservices/?hl=fr#BuildingURLs

在什么编码中存储了Java char?

Java char类型是否保证以任何特定编码存储? 编辑:我错误地说了这个问题。 我要问的是保证使用任何特定编码的字面文字?

在Mac OS X上的Java Swing JComponent中渲染Devanagari连字(Unicode)

我试图在Mac OS X 10.6上正确渲染Devanagari连字(在Unicode字符串中)。 字符串在JComponent上绘制,并采用RenderingHints进行抗锯齿。 连字在Windows XP SP2和7以及Ubuntu中正确显示,但在Mac OS X中,连字被分解(或者更确切地说,没有正确合并),变音符被移离其位置等等(参见下面的截图,正确的渲染示例来自左侧的Win XP SP2(使用RenderingHints Antialiasing键ON ),右侧的Mac OS X 10.6.7中的错误渲染示例(Antialising DEFAULT = OFF )。 我已将字体设置如下,因此它应该在任何系统上使用默认字体: new Font(null,Font.PLAIN,20); 我相信所有这些可能与Macs上的默认字符编码是MacRoman(不是UTF-8子集)以及其他系统(如Windows)使用UTF-8子集(例如WinLatin-1)有关)或cp1252等。 即使掌握了这些信息,我也不知道如何处理这个问题。 因此,如果有人能指出我正确的方向,我将非常感激。 我已经尝试了很多东西: 将字体设置为Devanagari MT并没有解决问题 TextAttribute LIGATURES_ON没有解决问题 我非常感谢任何提示或其他开发人员的代码片段(最好是在Mac上开发的印地语背景)。

如何使用BOM对UTF-16LE字节数组进行编码/解码?

我需要在java.lang.String编码/解码UTF-16字节数组。 字节数组通过字节顺序标记(BOM)提供给我,我需要使用BOM编码字节数组。 此外,因为我正在处理Microsoft客户端/服务器,我想以小端(以及LE BOM)发出编码以避免任何误解。 我确实意识到使用BOM它应该工作大端,但我不想在Windows世界游泳上游。 作为一个例子,这里有一个方法,它使用BOM将java.lang.String编码为带小端的UTF-16 : public static byte[] encodeString(String message) { byte[] tmp = null; try { tmp = message.getBytes(“UTF-16LE”); } catch(UnsupportedEncodingException e) { // should not possible AssertionError ae = new AssertionError(“Could not encode UTF-16LE”); ae.initCause(e); throw ae; } // use brute force method to add BOM byte[] utf16lemessage = new byte[2 […]

如何获得反向字符串(unicode安全)

让我们假设我们想要恢复以下字符串“áe”。 unicode就是“\ u0061 \ u0301 \ u0065”。 恢复它的天真的方法将是char的char private static String reverseStringNaive(String s) { char[] characters = new char[s.length()]; for (int i = s.length() – 1; i >= 0; i–) { int j = s.length() – i – 1; characters[j] = s.charAt(i); } return new String(characters); } 当我们希望获得“eá”(\ u0065 \ u0061 \ u0301)时,它给了我们“éa”(\ u0065 \ […]

Java中控制台应用程序中的Unicode输入

我一直在尝试在我的Java应用程序中检索“unicode用户输入”以获取一个小实用程序代码段。 问题是,它似乎正在开发Ubuntu“开箱即用”,我认为在UTF-8上运行OS宽编码,但在从“cmd”运行时无法在Windows上运行。 考虑的代码如下: public class SerTest { public static void main(String[] args) throws Exception { testUnicode(); } public static void testUnicode() throws Exception { System.out.println(“Default charset: ” + Charset.defaultCharset().name()); BufferedReader in = new BufferedReader(new InputStreamReader(System.in, “UTF-8”)); System.out.printf(“Enter ‘абвгд эюя’: “); String line = in.readLine(); String s = “абвгд эюя”; byte[] sBytes = s.getBytes(); System.out.println(“strg bytes: […]

Java charAt用于具有两个代码单元的字符

来自Core Java ,第一卷。 1,第9版,p。 69: 字符ℤ需要两个UTF-16编码的代码单元。 调用 String sentence = “ℤ is the set of integers”; // for clarity; not in book char ch = sentence.charAt(1) 不返回空格而是返回second的第二个代码单元。 但似乎sentence.charAt(1) 确实返回了一个空格。 例如,以下代码中的if语句的计算结果为true 。 String sentence = “ℤ is the set of integers”; if (sentence.charAt(1) == ‘ ‘) System.out.println(“sentence.charAt(1) returns a space”); 为什么? 我在Ubuntu 12.10上使用JDK SE 1.7.0_09,如果它是相关的。

在java中读取unicode字符

当我分配一个unicode字符串时,我对java有点新鲜 String str = “\u0142o\u017Cy\u0142”; System.out.println(str); final StringBuilder stringBuilder = new StringBuilder(); InputStream inStream = new FileInputStream(“C:/a.txt”); final InputStreamReader streamReader = new InputStreamReader(inStream, “UTF-8”); final BufferedReader bufferedReader = new BufferedReader(streamReader); String line = “”; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); stringBuilder.append(line); } 为什么在两种情况下结果都不同,文件a.txt也包含相同的字符串。 但是当我打印文件的输出时,它打印z\u0142o\u017Cy\u0142而不是实际的unicode字符。 如果我想将文件内容也打印为正在打印的字符串,我知道如何做到这一点。

如何在Java / Eclipse中使用Special Chars

如何在Java / Eclipse中使用/显示♥,♦,♣或characters等字符? 当我尝试直接使用它们时,例如在源代码中,Eclipse无法保存文件。 我能做什么? 编辑:如何找到unicode转义序列?

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 但仍然没有成功!