社区
Delphi
帖子详情
扩展ASCII码的显示问题
sunnyheart
2009-01-15 04:29:31
现在有2个ASCII,值分别是126,134和56
我要转换成char后组成字符串,用chr(126)+chr(134)+chr(56),结果是最后一个没了,只有两个字符;
改成WChar强制转化后,134对应的字符变成?,再转译成ascii的时候成了?对应的ascii。
有没有好办法?谢谢!
...全文
757
21
打赏
收藏
扩展ASCII码的显示问题
现在有2个ASCII,值分别是126,134和56 我要转换成char后组成字符串,用chr(126)+chr(134)+chr(56),结果是最后一个没了,只有两个字符; 改成WChar强制转化后,134对应的字符变成?,再转译成ascii的时候成了?对应的ascii。 有没有好办法?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunnyheart
2009-01-16
打赏
举报
回复
关键问题是,我加密后,在Delphi中即使能看到我要的内容,比如“~?8”,但是我写到一个文件中的时候,比如XML中
然后用二进制编辑器打开XML文件看,?位置对应的是3F,这就不对了
bdmh
2009-01-16
打赏
举报
回复
你好像明白了
sunnyheart
2009-01-16
打赏
举报
回复
[Quote=引用 16 楼 bdmh 的回复:]
两个?是不一样的,134的?不是ASCII表中的,他应该和另一个ASCII组成汉字的,134是一个非常规的?
[/Quote]
我明白,在扩展ASCII中,134是一个特殊字符
但是Delphi好像不能处理这些扩展ASCII,一旦我们把134转换成?后,delphi写到别的地方就认为是?的实际ASCII:3F(63)
c58342418
2009-01-16
打赏
举报
回复
顶
bdmh
2009-01-16
打赏
举报
回复
两个?是不一样的,134的?不是ASCII表中的,他应该和另一个ASCII组成汉字的,134是一个非常规的?
sunnyheart
2009-01-16
打赏
举报
回复
上面两位的方法我都试了,都能显示?,但是我用二进制编辑器看加密后的内容,?对应的asc变成了3F
delphi就这么笨吗?
bdmh
2009-01-16
打赏
举报
回复
不用,我用edit显示chr(134)可以显示'?'
ljluck7687
2009-01-16
打赏
举报
回复
很明显后面一个字符是汉字,上面诸位的办法都无法解决这个问题,
只能用以下办法才能正确显示:
示例代码:
var
i:integer;
ss:string;
begin
i:=134*256+56;
ss:=widechar(i);
edit1.Text:=chr(126)+ss;
end;
其中最关键的是要用widechar这个函数
sunnyheart
2009-01-16
打赏
举报
回复
[Quote=引用 11 楼 bdmh 的回复:]
大于127的,用一个edit去显示,然后去edit的值吧,办法虽然恶心了点,但可行
[/Quote]
多谢
不过edit需要设置什么字符集吗?我试了好像还是不行呢?
bdmh
2009-01-16
打赏
举报
回复
大于127的,用一个edit去显示,然后去edit的值吧,办法虽然恶心了点,但可行
sunnyheart
2009-01-16
打赏
举报
回复
[Quote=引用 9 楼 window_8888 的回复:]
chr处理的是0-127范围内的东西.超出这个范围,要另作处理.否则不正确
汉字的编码都超出128,得另行处理
[/Quote]
怎么处理?
不管显示什么,只要能显示出来就行
window_8888
2009-01-16
打赏
举报
回复
chr处理的是0-127范围内的东西.超出这个范围,要另作处理.否则不正确
汉字的编码都超出128,得另行处理
sunnyheart
2009-01-16
打赏
举报
回复
[Quote=引用 2 楼 starluck 的回复:]
一個char 只是一字節你放三個字符進去怎麼行呢??
[/Quote]
是3个char强制转化成WChar后放在string内
sunnyheart
2009-01-16
打赏
举报
回复
[Quote=引用 3 楼 bdmh 的回复:]
问题出在chr(134),他不象那两个能直接转成字符 ,因为134已经超出了ASCII的编码范围
chr(126)='~'
chr(56)='8'
chr(134)=#134
单独处理一下134,或者把134放在最后
[/Quote]
是个加密算法,顺序不可能改变的
sunnyheart
2009-01-16
打赏
举报
回复
解决了,我忘了用WideString保存了
谢谢各位
fangsp
2009-01-15
打赏
举报
回复
大于128的 基本上为不可见字符了
simonhehe
2009-01-15
打赏
举报
回复
过滤下传入的ascii值
bdmh
2009-01-15
打赏
举报
回复
ASCII码中,第0~32号及第127号是控制字符,常用的有LF(换行)、CR(回车);第33~126号是字符 ,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母 ,其余的是一些标点符号、运算符号等。
bdmh
2009-01-15
打赏
举报
回复
问题出在chr(134),他不象那两个能直接转成字符 ,因为134已经超出了ASCII的编码范围
chr(126)='~'
chr(56)='8'
chr(134)=#134
单独处理一下134,或者把134放在最后
starluck
2009-01-15
打赏
举报
回复
一個char 只是一字節你放三個字符進去怎麼行呢??
加载更多回复(1)
Python编程系列教程之一基础篇
python开发基础篇视频教程主要讲解内容:python开发,pycharm使用,python基础语法、分支循环、字符串、数值运算、位运算、进制、列表、元组、字典、编码、文件操作、集合运算、
ascii码
、函数高阶函数装饰器、列表...
关于
扩展
ASCII码
ASCII码
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。...后128个称为
扩展
ASCII码
。许多基于x86的系统都支持使用
扩展
(或“高”)ASCII。
扩展
ASCII 码允许将每个字符的第8...
ASCII码
表及
扩展
ASCII码
表
ASCII码
表可以看成由三部分组成: 第一部分:由00H到1FH共32个,一般用来通讯或作为控制之用。有些可以
显示
在屏幕上,有些则不能
显示
,但能看到其效果(如换行、退格).如下表: 第二部分:是由20H到7FH共96个,这95...
ASCII码
表及其
扩展
ASCII码
中的控制字符 十进制 十六进制 控制字符 转义字符 英文 注释 0 00 NUL \0 Null character 空字符 1 01 SOH Start of Heading 标...
ASCII码
表、
ASCII码
扩展
表
ASCII码
控制符号(不可打印字符,范围0~31及 127) 二进制 十进制 十六进制 缩写 Unicode 表示法 脱出字符 表示法 名称/意义 00000000 0 00 NUL ␀ ^@ 空字符(Null...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章