ASCII码128-255扩展编码显示奇葩中文的原因
来源:互联网 发布:linux dd 备份系统 编辑:程序博客网 时间:2024/06/04 19:08
在做那个100道算法例题的时候碰到肿么一个程序
【程序 7】输出特殊图案,请在c环境中运行,看一看,Very Beautiful!题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.
程序分析:字符共有256个。不同字符,图形不一样。
代码:
#include <stdio.h>#include <conio.h>int main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",a,a,b,a,a); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",b,a,a,a,b);getch();}然后再输出的时候变成了这个样子:
开始的时候因为题目也没细说,只以为输出结果就是酱紫滴。。。。
然后到了程序9滴时候。。。问题粗来咯:
【程序 9】题目:要求输出国际象棋棋盘。
程序分析:用 i 控制行,j来控制列,根据 i+j 的和的变化来控制输出黑方格,还是白方格。
代码:
#include <stdio.h>#include <conio.h>int main(){int i, j;for(i = 0;i < 8;i ++ ){for(j = 0;j < 8;j ++ ){if( (i + j) % 2 == 0){printf("%c%c", 219, 219);}else{printf(" ");}}printf("\n");}getch();return 0;}输出结果:
好吧,这个样子明显就不对了。然后发现程序7和程序9都用的是ASCII码219,但是输出了不一样的奇葩中文,而不是应该显示的黑框框。
google一下,找到了原因:编号在128~255的是扩展的编码,原本就不是作为显示用的,出现这个问题的原因是控制台使用了中文代码页,要显示扩展ASCII码,则将执行这个程序的控制台的的代码页改为 437 (OEM-美国) 即可!
在控制台窗口标题栏上 右键--》默认值--》默认代码页 修改为437,再次运行程序就看到了
上面两个程序真正的输出结果应该是:
最后,奇怪的是:我的WIN7是英文原版的,为毛控制台还是中文代码页。还有就是虽然酱紫改了以后的确可以正常显示了,但是只是在我直接运行生成的EXE文件才能正常显示,当我在VS中直接调试运行的时候,还是不能正常显示,粗线了各种奇葩中文。目测可能因为我用的是中文编译器的缘故吧。
- ASCII码128-255扩展编码显示奇葩中文的原因
- ASCII码128-255扩展编码显示奇葩中文的原因
- 字符编码(一):ASCII码,扩展ASCII码
- 在eclipse中安装properties插件PropertiesEditor及设置(附图),ASCII码转换成中文 安装成功后ASCII还是不能转换成中文的,原因是设置里面没有把编码设置为utf8的
- ASCII码和扩展的ASCII码
- 奇葩的JS编码
- ASCII 码的显示
- java编码问题(中文乱码的原因)
- ASCII码 扩展ASCII码表
- JAVA中文显示乱码的原因
- ascii码字符表, 扩展的ascii码字符表, html码, 扫描码, 广义二进制编码的十进制交换码(EBCDIC), Unicode
- C语义char*显示中文---ASCII、DBCS、Unicode三种编码---char* CString string区别
- 扩展ASCII码字符对应UNICODE编码
- 那些奇葩的程序猿离职原因
- mysql数据库连接错误的奇葩原因
- 什么是扩展ASCII码?
- 【eclipse】properties文件中文件显示ASCII码
- 中文ascii转为中文显示问题
- 很好看的网页动画倒影效果
- SetWindowPos
- OpenWrt C/C++ Development with Eclipse(Eclipse下的Openwrt开发)
- 点阵汉字显示
- Struts2中namespace的用法
- ASCII码128-255扩展编码显示奇葩中文的原因
- linux系统下注释乱码解决方法
- Use MicroLIB是干什么的
- KeilMDK4.22 编译STM32工程警告:warning: #223-D: function " *** " declared implicitly
- 文件目录权限与配置
- Oracle Listener静态配置、动态注册以及LOCAL_LISTENER问题
- 【JAVA】AES算法的java实现
- java.net.BindException: Address already in use: JVM_Bind:80
- KeilMDK4.22 编译STM32工程报错:Error: L6218E: Undefined symbol