代码页

字符集与编码(六)——getBytes方法及乱码初步

99封情书 提交于 2019-12-03 09:45:46
在 前一篇 里我们谈了Unicode的代码单元及string.length,现在接着前面的讨论继续谈string.getBytes()方法并对乱码的产生作初步分析。 string.getBytes方法 首先声明一下,以下讨论如无特别说明,均是在Java语言环境下。如果你用的不是java,我只能说声抱歉。但另一方面,我相信无论是何种语言或平台,也必然有类似的方法及类似的处理,而其中的原理也必将是相通的,当然了,具体到细节上则可能会有些差异。 带参数的调用 首先,string.getBytes它可以带参数去调用,这是最简单的情形,如下 @Test public void testGetBytesGbk() throws UnsupportedEncodingException { String str = "hello你好"; assertThat(str.getBytes("GBK").length).isEqualTo(9); } 因为GBK是变长编码,对ASCII字符采用一字节,汉字则是两字节,所以总的长度是1×5+2×2=5+4=9,所以测试是通过的。 注:本文代码均已经上传到开源中国oschina的git.oschina.net上,具体代码见 http://git.oschina.net/goldenshaw/java_code_complete/blob/master

MessageBox中文乱码解决方法

匿名 (未验证) 提交于 2019-12-03 00:09:02
procedure TForm1.Button1Click(Sender: TObject); var ad:widechar; s:LPCSTR; s2:string; begin s2:='s多少付' ; // s:= pchar(CP936ToUTF8(s2)); s:=pchar( UTF8ToCP936(s2)); showmessage(s); MessageBox(0,PChar(UTF8ToAnsi('正常显示中文')),'1',MB_OK or MB_ICONEXCLAMATION); MessageBox(0,s,'1',0); end; https://blog.csdn.net/poolord/article/details/77488704 在Lazarus中对字符串进行代码页转换 2017年08月22日 22:29:26 池龙 阅读数 885 更多 分类专栏: Delphi / Lazarus 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/poolord/article/details/77488704 由于Lazarus基于UTF-8,因此当读写Windows建立的纯文本文件的时候,由于其中的中文使用GBK(CP936)编码

使用Opencv3.2出现l error C4996:fopen

匿名 (未验证) 提交于 2019-12-02 23:56:01
------ 已启动生成: 项目: test, 配置: Debug x64 ------ 1> test.cpp 1>e:\vs2015opencv\opencv3.2\opencv\build\include\opencv2\core\mat.hpp(2586): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>e:\vs2015opencv\opencv3.2\opencv\build\include\opencv2\core\persistence.hpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>e:\vs2015opencv\opencv3.2\opencv\build\include\opencv2\core\utility.hpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>e:\vs2015opencv\opencv3.2\opencv\build\include\opencv2\core\utility.hpp : warning C4819: 该文件包含不能在当前代码页(936

cmd设置utf8编码

匿名 (未验证) 提交于 2019-12-02 23:56:01
在中文windows系统中,如果一个文本文件是utf-8编码的,那么在cmd.exe命令行窗口(所谓的dos窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。 如果想正确显示UTF-8字符,可以按照以下步骤操作: 1、打开CMD.exe命令行窗口 2、通过 chcp命令改变代码页,UTF-8的代码页为65001 1 chcp 65001 执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。 3、修改窗口属性,改变字体 这时使用type命令就可以显示UTF-8文本文件的内容了: 1 type filename.txt 4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。 5、另外提供一些chcp命令的参考: chcp 936 可以换回默认的GBK 来源:博客园 作者: 链接:https://www.cnblogs.com/wjcoding/p/11437917.html

在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (#1113)

匿名 (未验证) 提交于 2019-12-02 23:32:01
报错 在使用MySQL-Front导入sql文件时报错1113: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (#1113) 解决方案 导入.sql文件时,单击 选择文件对话框的文件名下方的 字符集 ,选择正确的字符集即可。 如图: ͼ1 ͼ2 如果喜欢,请点个“喜欢”,谢谢 作者:Cytosine 链接:https://www.jianshu.com/p/0d1d83d8fd44 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 转载请标明出处: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (#1113) 文章来源: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (#1113)

为什么ArcGIS 10.3导出 Shapefile的字段名会被截断成3个汉字?解决方法如下

喜欢而已 提交于 2019-12-01 04:55:01
为什么ArcGIS 10.3导出 Shapefile的字段名会被截断成3个汉字?低版本中不是至少可以存储4个汉字吗? 原因 这个问题仍然与编码类型有关。 ArcGIS 10.2 以及更早的版本,ArcGIS写shapefile的时候,遇到中文默认使用Windows当前语言 字符集编码(也称 代码页/CodePage/OEM CodePage),例如中文一般使用的是 CodePage 936(GBK)。 ArcGIS 10.2.1 以及之后的版本,ArcGIS写shapefile的时候,默认使用的是 UTF-8 编码类型。 这两种编码类型存储汉字所使用的字节数是不相同的,上面的关键字中我也给出了 wiki 的链接,有兴趣点进去看看详情。简言之,shapefile自身的限制是字段为9个字节,CP936编码下汉字通常为双字节存储,因此可以存储 9/2=4 个汉字;UTF-8 编码下汉字至少需要3个字节存储,因此最多只能存储 9/3=3 个汉字了。 <ignore_js_op> 举个例子,在Python命令行中,我们求一下 Unicode字符串的长度就可以真相大白。 <ignore_js_op> 解决方法 Perfect Solution: 使用地理数据库,放弃shapefile,避免各种截断问题,这也是存储地理数据的康庄大道。 但是,shapefile的拥趸说

MessageBox中文乱码解决方法

ε祈祈猫儿з 提交于 2019-11-30 03:57:27
procedure TForm1.Button1Click(Sender: TObject); var ad:widechar; s:LPCSTR; s2:string; begin s2:='s多少付' ; // s:= pchar(CP936ToUTF8(s2)); s:=pchar( UTF8ToCP936(s2)); showmessage(s); MessageBox(0,PChar(UTF8ToAnsi('正常显示中文')),'1',MB_OK or MB_ICONEXCLAMATION); MessageBox(0,s,'1',0); end; https://blog.csdn.net/poolord/article/details/77488704 在Lazarus中对字符串进行代码页转换 2017年08月22日 22:29:26 池龙 阅读数 885 更多 分类专栏: Delphi / Lazarus 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/poolord/article/details/77488704 由于Lazarus基于UTF-8,因此当读写Windows建立的纯文本文件的时候,由于其中的中文使用GBK(CP936)编码

windows cmd编码-chcp命令

不羁的心 提交于 2019-11-29 17:30:44
参考资料: windows cmd 编码 1、chcp命令作用 功能: 显示或设置活动代码页编号 不加参数键入 CHCP 显示活动代码页编号 。 2、chcp用法 CHCP [nnn] nnn : 指定代码页编号。    nnn指定一已有的系统字符集,该字符集在CONFIG.SYS文件中由COUNTRY命令定义。    不加参数键入 CHCP 显示活动代码页编号。 Eg: C:\Users\lo>chcp 活动代码页: 936 C:\Users\lo> 3、在DOS下可以通过mode命令来设置代码页 选定代码页: MODE CON[:] CP SELECT=yyy    代码页状态: MODE CON[:] CP [/STATUS] nnn指定一已有的系统字符集,该字符集在CONFIG.SYS文件中由COUNTRY命令定义。 在DOS下可以通过mode命令来设置代码页 。 Eg: 输入"mode con cp select=936",则表示显示简体中文。 如果输入"mode con cp select=437",则表示显示MS-DOS 美国英语,而中文显示将会是?。 4、MS-DOS为以下国家和语言提供字符集 代码页 描述 1258 越南语 1257 波罗的语 1256 阿拉伯语 1255 希伯来语 1254 土耳其语 1253 希腊语 1252 拉丁 1 字符 (ANSI)

在Windows的CMD中如何设置支持UTF8编码

ぐ巨炮叔叔 提交于 2019-11-29 17:30:34
这里需要先了解些内容: CHCP是MD DOS中的命令,用来显示或设置活动代码页编号的。用法是: CHCP [nnn] 其中nnn指定的是代码页的编号。这个参数是可选的,在命令行下如果不指定这个代码页编号,那么默认是显示当前的代码页编号。比如,在默认的cmd窗口中,我们输入chcp,显示的将类似: 活动的代码页: 936 这里的936表示当前使用的是简体中文(GB2312)编码。 UTF8 你也需要了解编码的一些知识,为了完成支持UTF8的工作,你至少需要知道UTF8代码页的编号:65001。更多关于编码的内容,这里不赘述,请自行查找相关内容。 有这两个知识点,接下来,让cmd支持UTF8就变得容易了。 运行CMD; 输入 CHCP,回车查看当前的编码; 输入CHCP 65001,回车; 仅如此,还是不能支持UTF8的正常显示,你还要在窗体上右键,选择属性,来设置字体; 操作完上面几步后,即使你原来的字体里面没有显示Lucida Console这个字体,现在应该也能看到了。选择它。如果原来就有,可以选上它先试试,不行在执行上述步骤(这里补充:至少我本机需要CHCP 65001下,有朋友说不要); 选择只应用到本窗体,确认。 这时候,你的Console里面,应该支持UTF8了。 来源: oschina 链接: https://my.oschina.net/u/657911/blog

cmd设置utf8编码

放肆的年华 提交于 2019-11-29 01:38:49
在中文windows系统中,如果一个文本文件是utf-8编码的,那么在cmd.exe命令行窗口(所谓的dos窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。 如果想正确显示UTF-8字符,可以按照以下步骤操作: 1、打开CMD.exe命令行窗口 2、通过 chcp命令改变代码页,UTF-8的代码页为65001 1 chcp 65001 执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。 3、修改窗口属性,改变字体 在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。如下图所示: 这时使用type命令就可以显示UTF-8文本文件的内容了: 1 type filename.txt 4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。 5、另外提供一些chcp命令的参考: chcp 65001 就是换成UTF-8代码页 chcp 936 可以换回默认的GBK chcp 437 是美国英语 来源: https://www.cnblogs.com/wjcoding/p/11437917.html