我正在寻找一种方法来检测文档中的字符集。 我一直在阅读这里的Mozilla字符集检测实现: 通用字符集检测 我还发现了一个名为jCharDet的Java实现: JCharDet 这两个都是基于使用一组静态数据进行的研究。 我想知道的是,是否有人使用任何其他的实现成功,如果是的话? 你有没有推出自己的方法,如果是的话,你用什么algorithm来检测字符集? 任何帮助,将不胜感激。 我不是在寻找通过谷歌现有方法的清单,也不是在寻找链接到Joel Spolsky的文章 – 只是为了澄清:) 更新:我做了一大堆的研究,并最终find一个名为cpdetector的框架,使用可插入的方法来检测字符,请参阅: CPDetector 这提供了BOM,chardet(Mozilla方法)和ASCII检测插件。 写你自己的也很容易。 还有另一个框架,它提供了更好的字符检测,Mozilla的方法/ jchardet等… ICU4J 编写自己的cpdetector插件非常简单,它使用此框架提供更准确的字符编码检测algorithm。 它比Mozilla的方法更好。
PHP中的iconv()和mb_convert_encoding()什么区别? 一个人performance更好,更快等(如使用特定的编码)? 在什么情况下会比另一个更受欢迎? 这是我认为我已经知道的: 的iconv() 包含在大多数PHP的安装中。 当找不到映射到新字符集的字符时,可以指定是否将其转换为“相似”字符,或者忽略。 mb_convert_encoding() 通常需要安装php-mbstring扩展名。 能够处理HTML-ENTITIES ,转换为网页hex代码。 还有其他的区别吗?
我想parsing一个CSV文件,理想情况下使用weka.core.converters.CSVLoader。 但是,我拥有的文件不是有效的UTF-8文件。 它主要是一个UTF-8文件,但一些字段值是在不同的编码,所以没有编码整个文件是有效的,但我需要parsing它。 除了使用像Weka这样的java库之外,我主要在Scala工作。 我甚至无法读取文件usin scala.io.Source:例如 Source. fromFile(filename)("UTF-8"). foreach(print); 抛出: java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:277) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:337) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:176) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:153) at java.io.BufferedReader.read(BufferedReader.java:174) at scala.io.BufferedSource$$anonfun$iter$1$$anonfun$apply$mcI$sp$1.apply$mcI$sp(BufferedSource.scala:38) at scala.io.Codec.wrap(Codec.scala:64) at scala.io.BufferedSource$$anonfun$iter$1.apply(BufferedSource.scala:38) at scala.io.BufferedSource$$anonfun$iter$1.apply(BufferedSource.scala:38) at scala.collection.Iterator$$anon$14.next(Iterator.scala:150) at scala.collection.Iterator$$anon$25.hasNext(Iterator.scala:562) at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:400) at scala.io.Source.hasNext(Source.scala:238) at scala.collection.Iterator$class.foreach(Iterator.scala:772) at scala.io.Source.foreach(Source.scala:181) 我非常乐意把所有的无效字符都扔掉,或者用一些假的replace掉。 我将有许多像这样的文本以各种方式处理,可能需要将数据传递给各种第三方库。 一个理想的解决scheme是某种全局设置,它会导致所有的低级java库忽略文本中的无效字节,这样我就可以在不修改的情况下对这些数据调用第三方库。 解: import java.nio.charset.CodingErrorAction import scala.io.Codec […]
什么是C ++源代码的标准编码? C ++标准甚至会说这个吗? 我可以用Unicode编写C ++源代码吗? 例如,我可以在注释中使用非ASCII字符,例如中文字符吗? 如果是这样,是完全的Unicode允许的还是只是一个Unicode的子集? (例如,这个16位的第一页或者其他的东西)。 此外,我可以使用Unicode的string? 例如: Wstring str=L"Strange chars: â Țđ ě €€";
我正在编写一个脚本,将在Python 2.6中尝试将字节编码为许多不同的编码。 有什么办法可以获得我可以迭代的可用编码列表吗? 我试图这样做的原因是因为用户有一些文本编码不正确。 有有趣的人物。 我知道这个搞乱了的unicodeangular色。 我希望能够给他们一个答案,如“你的文本编辑器正在将该string解释为X编码,而不是Y编码”。 我想我会尝试使用一种编码对该字符进行编码,然后使用另一种编码重新对其进行解码,然后查看是否获得相同的字符序列。 即这样的事情: for encoding1, encoding2 in itertools.permutation(encodinglist(), 2): try: unicode_string = my_unicode_character.encode(encoding1).decode(encoding2) except: pass
我从来没有理解UTF-16编码的重点。 如果需要将string视为随机访问(即代码点与代码单元相同),则需要UTF-32,因为UTF-16的长度仍然是可变的。 如果你不需要这个,那么与UTF-8相比,UTF-16似乎是一个巨大的空间浪费。 UTF-16与UTF-8和UTF-32相比有什么优势?Windows和Java为什么使用它作为它们的本地编码?
是否真的有必要使用unsigned char来保存二进制数据,如在字符编码或二进制缓冲区工作的一些库? 为了理解我的问题,请看下面的代码 – char c[5], d[5]; c[0] = 0xF0; c[1] = 0xA4; c[2] = 0xAD; c[3] = 0xA2; c[4] = '\0'; printf("%s\n", c); memcpy(d, c, 5); printf("%s\n", d); 两个printf's输出𤭢正确,其中f0 a4 ad a2是Unicode代码点U+24B62 (𤭢)的hex编码。 即使是memcpy也正确地复制了char所保存的位。 什么推理可能主张使用unsigned char而不是plain char ? 在其他相关问题中, unsigned char被突出显示,因为它是唯一的(字节/最小)数据types,保证C规范没有填充。 但是,正如上面的例子所显示的,输出似乎不受任何填充的影响。 我用VC ++ Express 2010和MinGW来编译上面的代码。 尽pipeVC发出警告 warning C4309: '=' : truncation of constant […]
我如何设置JAX-RS的字符集? 我试过了@Produces("text/html; charset=UTF-8")但是被忽略了,只有text/html和HTTP头一起发送。 我想在MessageBodyWriter中设置字符集,但不想通过自己的reflection来分析@Produces注释来提取媒体types。
我问过strtolowerfunction。 但是当使用外来字符时,它不会将它们转换成大写字母,所以我必须使用: mb_strtolower($a,"utf8"); 但是,如果我想使用ucfirst()函数,我该怎么办? 我还没有find任何类似的function,我可以设置编码types。
对于已经指定的页面(通过HTTP头或元标签),使用UTF-8字符集的内容types…是否有添加accept-charset="UTF-8"的HTML表单的好处? (我知道IE-ISO-8859-1的accept-charset属性被破坏了,但是我还没有听说IE和UTF-8的问题,我只是问是否有利用UTF- 8,以防止input无效的字节序列。)