作者erspicu (.)
看板PttCurrent
标题Fw: [问题] ptt编译移植问题
时间Wed Aug 6 21:40:36 2014
※ [本文转录自 C_and_CPP 看板 #1JuQBV_3 ]
作者: erspicu (.) 看板: C_and_CPP
标题: [问题] ptt编译移植问题
时间: Wed Aug 6 11:36:59 2014
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
ARM Linux GCC
问题(Question):
X86平台上 注册时候输入正确中文姓名 PTT给过
但ARM平台上 住测时候输入正确中文姓名 PTT显示 "您的输入似乎不正确"
无法继续後续注册程序
错误结果(Wrong Output):
姓名正确性判别失误
程式码(Code):(请善用置底文网页, 记得排版)
http://ideone.com/L6Dw9G
补充说明(Supplement):
PttCurrent版太冷僻 没人会回
自自己尝试解决 只好定义FOREIGN_REG flag
直接忽略中文姓名正确判别 才能继续後续注册
编译过程中 的警告讯息 查起来是 assembler的问题
但我现在没办法贴上
目前猜测是 arm上 编译器或是组译器问题
可能跟arm.x86一些cpu架构性差异问题 (LE BE?)
这问题有空自己会继续追
但想说有经验的人或许会知道怎麽回事
满奇妙的 中间应该有不少文章
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.56.181
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1407296223.A.FC3.html
1F:→ descent:有没可能是 utf8/big5 中文的问题 08/06 11:43
check 环境语系问题 应该不是 这问题追起来应该相当多文章
※ 编辑: erspicu (60.248.56.181), 08/06/2014 11:50:37
2F:→ uranusjr:如果直接给 Big 5 编码过後的 char sequence 呢? 08/06 12:19
真的很奇妙 大概发现原因
http://ideone.com/OuBhdX
char test_char2[]= "中文字测试" ;
网站经过处理变乱码 但原始是这样
经过测试这code储存为ASII编码
然後在不同的环境用不同的编译器去跑
印出来的数值会不太相同
WIN7 CODEBLOCKS GCC跑出来是
char test!
98 , 97 , 120 , 101
-92 , -92 , -92 , -27
x86 linux上是
char test!
98 , 97 , 101 , 114
-92 , -92 , -27 , -90
arm linux上是
98 , 97 ,120 , 101
164 , 164 ,164 , 229
※ 编辑: erspicu (60.248.56.181), 08/06/2014 17:38:55
3F:→ uranusjr:Windows 7 和 ARM Linux 其实是一样的, 只是 char 定义为 08/06 17:59
4F:→ uranusjr:signed 或 unsigned 的差异; 怎麽看都还是编码问题啊 08/06 17:59
http://blog.cdleary.com/2012/11/arm-chars-are-unsigned-by-default/
这应该就是问题原因了 比较奇怪的是同是X86 列印英文
一组是98 , 97 , 120 , 101 一组是98 , 97 , 101 , 114
※ 编辑: erspicu (60.248.56.181), 08/06/2014 18:15:47
5F:推 purpose:就 sign extension 超过 0x7F 的被一直补 1 出来就变负数 08/06 18:14
6F:→ purpose:然後 linux 会把你的中文用 UTF-8 存,Win 用 Big5 存 08/06 18:15
7F:→ purpose:至於 linux 的 98 97 "101" 应该是你打字错误 08/06 18:16
X86 LINUX sample 有打错 array index变成 0,1,3,4 .....
所以的确只是signed和unsigned的问题 没错
这麽说来按照PTT sources的写法 要编译正确运作
在arm上就要多下一点编译器参数了
※ 编辑: erspicu (60.248.56.181), 08/06/2014 18:20:58
8F:→ uranusjr:这个故事告诉我们请不要对 non-ASCII input 用 char... 08/06 18:23
9F:→ uranusjr:不知道如果提 patch 改成 signed char 他们会不会收 08/06 18:24
※ 编辑: erspicu (60.248.56.181), 08/06/2014 18:25:11
10F:→ erspicu:借转 08/06 21:40
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: erspicu (61.70.105.149), 08/06/2014 21:40:36