今天发现`cn.archive.ubuntu.com`不能更新了,只能换成国内源:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 阿里云 $ sudo sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list
今天发现`cn.archive.ubuntu.com`不能更新了,只能换成国内源:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 阿里云 $ sudo sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list
如题所示,之前一直使用`commons-lang3-3.x.jar` 这个jar包里面的 `org.apache.commons.lang3.StringEscapeUtils` 类来转义特殊字符,但是最近发现使用这个类会出现以下提示:
Multiple markers at this line - The type StringEscapeUtils is deprecated - The method escapeXml11(String) from the type StringEscapeUtils is deprecated
看提示是说 `StringEscapeUtils` 这个类已经过期了,提醒使用新的替代类。看了下这个类的官方文档,很自然地找到了新的替代类——`org.apache.commons.text.StringEscapeUtils`
因此,使用Maven引用相应的jar包即可解决这个问题:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.9</version> </dependency>
或者直接去Maven仓库下载这个jar包,下载地址如下:http://mvnrepository.com/artifact/org.apache.commons/commons-text/1.1
apache日志记录的中文,是内码如下:
\xb6\xd4\xb6\xc0\xc1\xa2\xd1\xa7\xd4\xba\xbf\xc9\xb3\xd6\xd0\xf8\xb7\xa2\xd5\xb9\xce\xca\xcc\xe2
编码后中文是:
对独立学院可持续发展问题
完全看不懂是什么意思,如何解析出里面的中文出来呢?
php参考如下代码:
<?php $str="\xb6\xd4\xb6\xc0\xc1\xa2\xd1\xa7\xd4\xba\xbf\xc9\xb3\xd6\xd0\xf8\xb7\xa2\xd5\xb9\xce\xca\xcc\xe2"; eval("\$str = \"$str\";"); echo iconv('GB2312','UTF-8',$str."\n"); ?>
golang参考如下代码:
import ( "fmt" "log" "os" "code.google.com/p/mahonia" ) func main() { var use_logfile bool use_logfile = true f, err := os.OpenFile("testlogfile", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("error opening file: %v", err) } defer f.Close() if use_logfile { log.SetOutput(f) } s := "\xb6\xd4\xb6\xc0\xc1\xa2\xd1\xa7\xd4\xba\xbf\xc9\xb3\xd6\xd0\xf8\xb7\xa2\xd5\xb9\xce\xca\xcc\xe2" enc := mahonia.NewDecoder("UTF-8") x := enc.ConvertString(s) gbk := mahonia.NewDecoder("gbk") n := gbk.ConvertString(s) log.Printf("file:", x, n) fmt.Println(x, n) }
java参考如下代码:
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.StandardCharsets; public class HelloWorld { private static String unescapeGBK(final String s) { final StringBuilder buf = new StringBuilder(); int i = 0; int len = s.length(); while (i < len) { int ch = s.charAt(i); if (ch == '\\') { // \xXX\xXX : map to unicode(XXXX) int c = (char) ((Character.digit(s.charAt(i + 2), 16) << 4) + Character.digit(s.charAt(i + 3), 16)); c = c << 8; c += (char) ((Character.digit(s.charAt(i + 6), 16) << 4) + Character.digit(s.charAt(i + 7), 16)); buf.append((char) c); i += 7; } else { buf.append((char) ch); } i++; } return buf.toString(); } public static void main(String args[]) throws UnsupportedEncodingException { // UTF-8 String coderStr = "\\x22\\xE5\\x93\\x88\\xE5\\x93\\x88\\x22"; String str = coderStr.replaceAll("\\\\x", "%"); str = URLDecoder.decode(str, StandardCharsets.UTF_8.toString()); System.out.println(str); // GBK coderStr = "\\xb6\\xd4\\xb6\\xc0\\xc1\\xa2\\xd1\\xa7\\xd4\\xba\\xbf\\xc9\\xb3\\xd6\\xd0\\xf8\\xb7\\xa2\\xd5\\xb9\\xce\\xca\\xcc\\xe2"; str = getApacheChineseGBK(coderStr); System.out.println(str); } public static String getApacheChineseGBK(String str) throws UnsupportedEncodingException { str = str.trim().toLowerCase(); str = unescapeGBK(str); final ByteBuffer byteBuffer = ByteBuffer.allocate(str.length() * Character.SIZE / Byte.SIZE); final CharBuffer converter = byteBuffer.asCharBuffer(); converter.append(CharBuffer.wrap(str)); str = new String(byteBuffer.array(), "GBK"); return str; } }