乱码

文本在内存中的编码(1)——乱码探源(4)

北战南征 提交于 2019-11-27 09:40:44
让我们从一个故事开始说起。话说北大是很有哲学传统的,当你准备踏进北大校门时,连门卫都会连问你三个终极哲学问题: 你是谁?你从哪里来?你要到哪里去? 那么这与我们的问题又有何关系呢?我觉得理解内存中的编码的关键在于理解String类型,因此我们也来探讨一下String的前世今生:String是谁(什么)?String从哪里来?String到哪里去? 当我们能够清晰地回答这三个终极问题时,对文本在内存中的编码也算理解得差不多了。 注:文中将用Java平台为例来探讨这些问题。 String是什么? 要回答这个问题,源码当然是最好的参考。 字符序列(CharSequence) 如果看String类型的声明: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; // ... } 可以看到它实现了所谓的CharSequence接口,所以它是一个char序列,内部实质是一个char数组。 也即上述代码中的”char value[]“,(也许你觉得”char[] value“的写法更习惯一些,两者是等价的) 如果再看String的length方法,事实就更清楚了,实际上取的是char数组的长度: public

secureCRT遇到过的问题

南笙酒味 提交于 2019-11-27 08:30:35
中文输入乱码成问号 定制securtCRT主题时, 莫名其妙的中文输入全部变成了 问号字符 。 网上所有解决方案无效, 绝不可能是网上说的linux系统默认编码设置问题, securtCRT也已经设置为UTF8编码了。 反复试验, 最终才发现问题所在,原来是 字体问题 。 定制主题期间曾经换过字体, 然而那个字体不支持中文字符集。 具体如图, 一定要选择支持中文字符集的字体: 这个楷体支持中文字符集GB2312, 这和你的linux的utf8默认设置不冲突, 这里的GB2312是secureCRT终端的输入字符集。 这个字体就没有中文字符集的支持了, 所以你在secureCRT中输入中文时, 字符都会变成问号, 因为此时终端工具无法识别中文。 按键失效 可能的解决方案: 菜单-》全局选项-》默认会话-》终端-》仿真 选择 linux终端 推荐主题配色 配色,备份并覆盖securtCRT的Color Schemes.ini文件: B:"单色"=00000044 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff

spring mvc json 返回乱码问题解决(vestion:3.x.x)

你说的曾经没有我的故事 提交于 2019-11-27 08:21:23
工程中用springmvc返回json格式时,中文乱码了,看了一下springmvc源码发现 StringHttpMessageConverter 这个类的默认编码为ISO-8859-1(悲剧,springmvc这么大的东西怎么不用utf-8,搞不懂) 下面是解决方法, springmvc 的配置文件: <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <property name="messageConverters"> <list> <bean class = "org.springframework.http.converter.StringHttpMessageConverter"> <property name = "supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.method.annotation

解决spring-mvc @responseBody注解返回json 乱码问题

时光毁灭记忆、已成空白 提交于 2019-11-26 20:32:56
在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题。现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文常常是以 “????”显示,让人很恼火。在网上搜索后有很多解决的方案,方案都说中文乱码问题牵扯到springmvc的 StringHttpMessageConverter类,给出的答案都是自己去写个类继承它,然后用一堆眼花缭乱的配置去在beans.xml中去配 置,而且还必须要配置在<mvc:annotation-driven/>标签之前,否则。。。。 我也出现了json中文乱码问题,搜出了一大堆方案后大喜,一个接一个的去测试。结果很失望:居然没一个能够解决我的问题!这不奇怪么,而且那么繁琐的过程让人望而生畏,又去是读源码又是覆盖方法什么,都说原因之所在于: [java] ...... public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> { public static final Charset DEFAULT_CHARSET = Charset.forName( "ISO-8859-1" ); ...

Windows 下 msysgit 中文配置

女生的网名这么多〃 提交于 2019-11-26 15:48:48
一、 概述 1. 参考文章 《 git 乱码解决方案汇总》 《另类方法解决 Windows 下 git-bash 中文输入的乱码问题》 2. 相关软件 Git for Windows msysgit : msysgit 是 Git 版本控制系统在 Windows 下的版本。 点击进入 msysgit 下载页面 也可下载 Portable 版本,此版本无需安装,解压后可直接使用。 点击进入 msysgit Portable 版本下载页面 msys : 一个通过将 Linux 源代码在 Win32 上编译而成的 UNIX 工作环境 。 点击进入 msys-cn 下载页面 二、 中文环境配置 1. 正常文件配置 文件: 安装目录 /etc/git-completion.bash 添加如下代码 #ls能够正常显示中文 alias ls='ls --show-control-chars --color=auto' 文件: 安装目录 /etc/inputrc 修改如下代码 set output-meta off set convert-meta on 为 #中文的正常输入 set output-meta on set convert-meta off 文件: 安装目录 /etc/gitconfig 添加如下代码 [gui] #代码库统一用urf-8,在git gui中可以正常显示中文