我怎样才能在全局忽略UTF-8字符串无效的字节序列

Python017

我怎样才能在全局忽略UTF-8字符串无效的字节序列,第1张

如果你只是想在原始字节进行操作,你可以试试它的编码为ASCII-8BIT /二进制。

str.force_encoding("BINARY").split("n")

这不会让你的U回来,不过,因为在这种情况下,源字符串为ISO-8859(或喜欢):

"- Men\xFC -".force_encoding("ISO-8859-1").encode("UTF-8")

=>"- Menü -"

如果你想获得multibyte字符,你必须知道的源字符集是什么。

一旦你force_encoding如果数据是从您的数据库,你可以改变你的ASCII-8BIT或二进制编码ruby应该举报他们据此即可。或者,您可以monkeypatch数据库驱动程序来强制编码的读取它的所有字符串。这是一个巨大的,虽然,可能是完全错误的做法。

正确的答案将是解决你的字符串编码。这可能需要它们的数据库修复,数据库驱动程序连接的编码修复,或combinations。所有的字节仍然存在,但如果你正在处理一个给定的字符集,你应该,如果可能的话,让ruby知道,你希望你的数据在该编码。错误是mysql2驱动程序连接到已在拉丁文编码数据的MySQL数据库,但要指定UTF-8字符集进行连接。该导轨从DB取拉丁文的数据并把它解释为UTF-8,而不是将其解释为拉丁文,然后可以转换为UTF-8。

如果你能在这里阐述的字符串中,答案是可能的。您也可以看看这个答案的可能的全局(-ish)Rails的解决方案,默认字符串编码。

怎么才一个回答,不好意思我来晚了

会perl的应该很多呀,老脚本语言了

楼上回答其实也没错,他的是汉字环境,所以用的国标码

perl一般用在linux多点,还有就是日本人的企业里,跟ruby类似

输出到屏幕上,是解码过的字符串,用的decode

处理的时候要编码成相应的流,encode成什么就看你的处理了

开始这个东西我也很纠结,其实没心要的,en不成就de嘛~

1.使用URI.escape(foo,Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))在Ruby中,和encodeURIComponent(foo)在javascript中这两种行为将同样和编码空间为%20。2.在URL编码,既+和%20代表一个空格,所以尽管人们可以在空间编码成+和其他成%20,它们都应该快乐地解码要么回一个空间。JavaScript有编码的东西传输几个不同的函数,最好的一个是encodeURIComponent,其中一个URI的编码。像这样:varname=/*getthenamefromsomewhere,perhapsaformfield*/varqueryString="?name="+encodeURIComponent(name)