草庐IT

utf8_unicode_cs

全部标签

java - 奇怪的 Java Unicode 正则表达式 StringIndexOutOfBoundsException

我的问题很简单,但也很费解。可能是有一个简单的开关可以解决这个问题,但我在Java正则表达式方面经验不多......Stringline="???";line.replaceAll("(?i)(.)\\1{2,}","$1");这会崩溃。如果我删除(?i)开关,它就会工作。这三个unicode字符不是随机的,它们是在一个大韩文文本中找到的,但我不知道它们是否有效。奇怪的是正则表达式适用于除此之外的所有其他文本。为什么会出现错误?这是我得到的异常Exceptioninthread"main"java.lang.StringIndexOutOfBoundsException:Stringi

java - 如何检查字节数组是否包含 Java 中的 Unicode 字符串?

给定一个字节数组,它是UTF-8编码的字符串或任意二进制数据,在Java中可以使用什么方法来确定它是什么?数组可以由类似于以下的代码生成:byte[]utf8="HelloWorld".getBytes("UTF-8");或者,它可能是由类似于以下的代码生成的:byte[]messageContent=newbyte[256];for(inti=0;i关键是我们不知道数组包含什么但是需要找出来才能填充下面的函数:publicfinalStringgetString(finalbyte[]dataToProcess){//DeterminewhetherdataToProcesscont

Java Unicode 变量名

我在讨论变量命名的论坛中进行了一次有趣的讨论。抛开惯例,我注意到变量具有Unicode字符的名称是合法的,例如以下是合法的:int\u1234;但是,例如,如果我给它命名#,它会产生错误。根据Sun'stutorial如果“以字母、美元符号“$”或下划线字符“_”开头,则有效。但是unicode1234是一些埃塞俄比亚字符。那么真正定义为“字母”的是什么? 最佳答案 Unicode标准定义了什么算作字母。来自JavaLanguageSpecification,section3.8:Lettersanddigitsmaybedrawn

java - 从字符串中删除特定 unicode 范围的字符

我有一个程序可以从Twitter流API实时解析推文。在存储它们之前,我将它们编码为utf8。某些字符最终在字符串中显示为?、??或???而不是它们各自的unicode代码并导致问题。经过进一步调查,我发现有问题的字符来自"emoticon"block,U+1F600-U+1F64F,andthe"MiscellaneousSymbolsAndPictographs"block,U+1F300-U+1F5FF.我尝试删除,但没有成功,因为匹配器最终替换了字符串中的几乎每个字符,而不仅仅是我想要的unicode范围。Stringutf8tweet="";try{byte[]utf8Byt

java - 为什么我不能将 char 绑定(bind)到 Java 中的 unicode caSTLe 字符?

classA{publicstaticvoidmain(String[]args){chara='∀';System.out.println(a);charcastle='?';System.out.println(castle);}}我可以为颠倒的A制作一个char就好了,但是当我尝试制作caSTLechar时,它会出现3个编译错误。为什么?$javacA.java&&javaAA.java:5:unclosedcharacterliteralcharcastle='?';^A.java:5:illegalcharacter:\57159charcastle='?';^A.java:

Java Char 到它的 unicode 十六进制字符串表示,反之亦然

我需要将Java字符的十六进制编码生成字符串,稍后再解析这些字符串。我找到了here该解析可以按如下方式执行:charc="\u041f".toCharArray()[0];我希望有更优雅的东西,比如Integer.valueOf()用于解析。如何正确生成十六进制unicode? 最佳答案 这将生成字符的十六进制字符串表示:charch='ö';Stringhex=String.format("%04x",(int)ch);这会将十六进制字符串转换回字符:inthexToInt=Integer.parseInt(hex,16);ch

Java:如何检查字符是否属于特定的unicode block ?

我需要确定我的输入属于哪种自然语言。目标是区分混合输入中的阿拉伯语和英语单词,其中输入是Unicode并从XML文本节点中提取。我注意到类Character.UnicodeBlock。与我的问题有关吗?我怎样才能让它发挥作用?编辑:Character.UnicodeBlock方法对阿拉伯语很有用,但显然对英语(或其他欧洲语言)没有用,因为BASIC_LATINUnicodeblock涵盖了符号和不可打印的字符和字母。所以现在我使用String对象的matches()方法和正则表达式"[A-Za-z]+".我可以接受它,但也许有人可以建议更好/更快的方法。 最

java - 使用 OpenCSV 解析包含 Unicode 字符的 CSV 文件

我正在尝试使用OpenCSV解析.csv文件在NetBeans6.0.1中。我的文件包含一些Unicode字符。当我在输出中写入它时,该字符以其他形式出现,例如(HJ1'-E/;)。当我在记事本中打开这个文件时,它看起来没问题。我使用的代码:CSVReaderreader=newCSVReader(newFileReader("d:\\a.csv"),',','\'',1);String[]line;while((line=reader.readNext())!=null){StringBuilderstb=newStringBuilder(400);for(inti=0;i

java - 我应该使用 Unicode 符号的哪个子集来标记文本中的特殊子字符串?

我们的应用程序发送字符串,然后将其本地化到客户端。有时那些是整个字符串,有时只是子字符串,所以我们必须标记它们。如果它只使用Unicode,那将是最好的,因为它不需要任何协议(protocol)更改。示例:"Length:(mark)10(mark)"其中10是以厘米为单位的长度,但应进行转换以显示为英寸或毫米。Unicode特殊字符(0xFFF0-0xFFFF)是在文本中标记此类特殊子字符串的正确选择吗? 最佳答案 不,代码点在Specialsblock中各有用途。将它们用于其他目的可能会导致意想不到的效果。即使您自己对所有处理进

java - 在 Java 中对 UTF-16 字符串中的字符进行排序

TLDRJava使用两个字符来表示UTF-16。使用Arrays.sort(不稳定排序)会扰乱字符排序。我应该将char[]转换为int[]还是有更好的方法?详情Java将字符表示为UTF-16。但是Character类本身包装了char(16位)。对于UTF-16,它将是两个char(32位)的数组。使用内置排序对UTF-16字符的字符串进行排序会弄乱数据。(Arrays.sort使用双枢轴快速排序,而Collections.sort使用Arrays.sort来完成繁重的工作。)具体来说,是把char[]转成int[]还是有更好的排序方式?importjava.util.Arrays