当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 大虾,帮我啊。。。输出ASCII码乱码!!!
帖子发表于 : 2007-05-08 12:56 

注册: 2007-03-19 16:44
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
这是我写的程序:
#include <iostream>
#define DESTSIZE 52
#define CARDSIZE 13
#define SUITSIZE 4

using namespace std;

class Card{
private:
int suit;
int face;
public:
Card() {}
~Card() {}

void setSuit(int);
void setFace(int);
int getSuit();
int getFace();
void setCard(int mySuit , int myFace);
void showCard(int mySuit , int myFace);
};

void Card::setSuit(int mySuit) {
suit = mySuit;
}

void Card::setFace(int myFace) {
face = myFace;
}

int Card::getSuit() {
return suit;
}

int Card::getFace() {
return face;
}

void Card::setCard(int mySuit , int myFace) {
setSuit(mySuit);
setFace(myFace);
}

void Card::showCard(int mySuit , int myFace) {
switch(mySuit) {
case 1: cout << '\003'; break;
case 2: cout << '\004'; break;
case 3: cout << "\005"; break;
case 4: cout << "\006"; break;
}
switch(myFace) {
case 1: cout << 'A' << '\t'; break;
case 11: cout << 'J' << '\t'; break;
case 12: cout << 'Q' << '\t'; break;
case 13: cout << 'K' << '\t'; break;
default: cout << myFace << '\t'; break;
}
}

class Dest{
private:
Card cards[DESTSIZE];
public:
Dest() {}
~Dest() {}

void setDest();
void showDest();
};
void Dest::setDest() {
for(int m = 1 ; m <= SUITSIZE ; m++)
for(int n = 1 ; n <= CARDSIZE ; n++)
cards[n].setCard(m , n);
}
void Dest::showDest() {
for(int m = 1 ; m <= SUITSIZE ; m++) {
for(int n = 1 ; n <= CARDSIZE ; n++) {
cards[n].showCard(m , n);
}
}
}


int main(void) {
Dest dest;
dest.setDest();
dest.showDest();
return 0;
}

在XP下一切正常,可是在7。04下无法显示的扑克牌的花色是乱码。。。
望大虾指点,上次望在解决XMMS乱码时做了sudo cp /etc/gtk/gtkrc.zh_CN /etc/gtk/gtkrc.zh_CN.utf8


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-05-08 13:15 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
enconv -e GBK xxxx.c试试


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-05-08 13:48 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
感觉ASCII在哪种编码下都没问题的


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-05-08 15:01 

注册: 2007-03-19 16:44
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
比如说这句:cout<<'\003'
从他就显示的是乱码,在ECLIPSE下也是这样的


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-05-08 19:26 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
那些都是控制字符...win下出方块什么的都是win自定的做法


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-05-08 20:34 

注册: 2007-03-19 16:44
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
那些都是控制字符...win下出方块什么的都是win自定的做法


LS可能误解了,我是查过ASCII表的,里面就是这样的。。。
希望有朋友能帮忙,而且有时用SCIM他的选项里也有这样的乱码。。。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-05-08 23:53 
头像

注册: 2007-04-03 9:52
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
cnoolon 写道:
BigSnake.NET 写道:
那些都是控制字符...win下出方块什么的都是win自定的做法


LS可能误解了,我是查过ASCII表的,里面就是这样的。。。
希望有朋友能帮忙,而且有时用SCIM他的选项里也有这样的乱码。。。


他没有说错

\003 是控制字符ETX (end of text),属于不可显示字符,显示乱码是很正常的

可以用下面这个函数判定是否为可以打印字符

代码:
  #include <ctype.h>
  int isprint( int ch );


你在书上看到的ETX只是他的名称而以


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-05-09 0:10 
头像

注册: 2007-04-03 9:52
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
顺便贴个ascii表


附件:
文件注释: ASCII Table
asciifull.gif
asciifull.gif [ 27.35 KiB | 被浏览 1141 次 ]

页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-05-09 18:01 

注册: 2007-03-19 16:44
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
首先先要感谢朋友们的回复,不过楼上的表好像是是不全的,没有把所以的东西都列出来。我在网上查到的表,'\003'他的符号就是扑克牌中的红星,当然他也表示LS这位朋友所指的意识。而且这个程序在XP下是正常的,也就是能显示出来,就是在UBUNTU在不行。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-05-09 21:39 
头像

注册: 2007-04-03 9:52
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
cnoolon 写道:
首先先要感谢朋友们的回复,不过楼上的表好像是是不全的,没有把所以的东西都列出来。我在网上查到的表,'\003'他的符号就是扑克牌中的红星,当然他也表示LS这位朋友所指的意识。而且这个程序在XP下是正常的,也就是能显示出来,就是在UBUNTU在不行。


2^8 = 256个,楼主所说不全是指没有把IBM定义的128~255列出还是别的什么东东?

0x00~0x1F 是控制字符,如果强制打印non-printable字符,

显示或者不显示,显示什么内容由OS自己决定, 至于0x03

windows/MS-Dos中把它显示为扑克牌中的红心,只是ms的一种方案,(貌似"BigSnake.NET"已经说过)

Unix/Linux或者其它的OS中显示为其它的东西或者不显示,也不是不可以,

只要它表示end of text 就OK了.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译