image frame

Wei

编程,不需要天赋异禀,也不需要魔法,更不需要长胡子。

JAVA String Charset

JAVA String Charset

JAVA的String使用上一般不会考虑到编码字符集的问题,即encode charset。但如果出现数据交互,就需要考虑了,因为不同环境就可能存在差别。如果编码对不上,可能会出现乱码。JAVA中我经常见到的是?乱码(多个问号),不排除其他可能。

An Example

host A用utf-8编码String,以byte[]形式发送到host B,如果host B只简单的用

1
new String(receivedBytes)

来转成String使用,这里使用的charset就是default charset。

The Java platform depends heavily on a property called the default charset. The Java Virtual Machine (JVM) determines the default charset during start-up.

可以用下面的方法测试出当前平台的default charset。

1
Charset.defaultCharset().displayName();

我个人的jvm default charset是US-ASCII,所以不设置String的charset就出现乱码。

解决方法

  1. new String时指定charset
  2. 修改JVM的default charset,方法自行搜索

Further

即使String的编码正确了,也不代表console output或output file就不会乱码。涉及了多个模块,可能需要更多的配置,请随机应变。

Hexo

Hexo

Hexo的创建使用不多赘述。

With github

Hexo通过hexo d来发布到github,因此github中deploy到的分支是网站目录。也就是deploy后在本地可以看到的.deloy_git
我个人使用了另一个branch来保存hexo项目的原始文件,也就是_config.yml配置,md文档等等。

Q&A

名字解释:
<root>: 指的网页根目录,或者说是hexo deploy到的repo分支根目录。

Q: 遇到网站repo中路径是存在的,比如<root>/categories/index.html确实存在,但是浏览器点击却是404?
A: 可以自行访问尝试下<root>/categories/或者全路径,看看index.html是不是有问题。如果这样就能访问到正常页面,那么问题大概就是缓存了。你可以换个浏览器快速检查下,或清除该页面缓存重试下。

附赠-chrome清除单个页面缓存

chrome的开发者工具-settingNetwork-Disable cache(while DevTools is open),此选项打开后,在你想要调试的页面,打开开发者工具,就不会出现一些奇怪的缓存现象了。

Hexo cmds

1
2
3
hexo new draft <draft_name>
# writing, writing, ...
hexo publish <draft_name>
1
hexo clean && hexo d
  • Copyrights © 2021 Huang Wei
  • Visitors: | Views:

请我喝杯82年的咖啡吧

支付宝
微信