开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1999|回复: 15
收起左侧

[分享] 乱码?? 不支持字符,unicode编码支持,emoji表情转\uxxxx

[复制链接]
结帖率:50% (1/2)
发表于 2024-5-7 13:54:31 | 显示全部楼层 |阅读模式   广西壮族自治区贵港市
本帖最后由 wlp 于 2024-5-8 08:15 编辑
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
调试输出 (_UTF8文本_编码 (“哈哈 \u0001\u0002”))
调试输出 (_UTF8文本_解码 (_UTF8文本_编码 (“哈哈 \u0001\u0002”)))
子程序名返回值类型公开备 注
_UTF8文本_解码文本型 
参数名类 型参考可空数组备 注
UTF8文本字节集
符号文本型默认:\u
变量名类 型静态数组备 注
u字节集 
n整数型 
k整数型 
transform逻辑型 
unicode_result字节集 
s文本型 
temp字节集 
' https://www.chinesecj.com/unihan.php
如果真 (是否为空 (符号))
符号 = “\u”
unicode_result = {  }
u = 编码_Utf8到Unicode (UTF8文本)
如果真 (取字节集右边 (u, 2){ 0, 0 })
u = 取字节集左边 (u, 取字节集长度 (u) - 2)

变量循环首 (1, 取字节集长度 (u), 2, n)
k = u [n]左移 (u [n + 1], 8)
transform = 真
' -----acsii范围
' [\0-\x1F\x7F-\x9F]
如果真 (k ≤ 159 取反 (k ≥ 0 k ≤ 31 k ≥ 127 k ≤ 159))
transform = 假

' -----汉字范围
如果真 (k ≥ 13312 k ≤ 19893 k ≥ 19968 k ≤ 40869 k ≥ 63744 k ≤ 64045)  ' [\u3400-\u4DB5] ' [\u4E00-\u9FA5]  ' [\uF900-\uFA2D]
transform = 假

判断 (transform = )
unicode_result = unicode_result + 取字节集中间 (u, n, 2)

s = 符号
s = s + __Byte_To_Hex (u [n + 1])
s = s + __Byte_To_Hex (u [n])
temp = 编码_Utf8到Unicode (到字节集 (到小写 (s)))
如果真 (取字节集右边 (temp, 2){ 0, 0 })
temp = 取字节集左边 (temp, 取字节集长度 (temp) - 2)
unicode_result = unicode_result + temp

变量循环尾 ()
返回 (编码_Unicode到Ansi (unicode_result))
子程序名返回值类型公开备 注
_UTF8文本_编码字节集 
参数名类 型参考可空数组备 注
文本文本型
符号文本型默认:\u
变量名类 型静态数组备 注
u字节集 
n整数型 
k整数型 
transform逻辑型 
s字节集 
temp字节集 
v整数型 
j整数型 
seq文本型 
new字节集 
utf8字节集 
' https://www.chinesecj.com/unihan.php
如果真 (是否为空 (符号))
符号 = “\u”
u = 编码_Ansi到Unicode (文本)
如果真 (取字节集右边 (u, 2){ 0, 0 })
u = 取字节集左边 (u, 取字节集长度 (u) - 2)
s = 编码_Ansi到Unicode (符号)
如果真 (取字节集右边 (s, 2){ 0, 0 })
s = 取字节集左边 (s, 取字节集长度 (s) - 2)
n = 0
判断循环首 ()
n = 寻找字节集 (u, s, n)
如果真 (n = -1)
跳出循环 ()
k = n + 取字节集长度 (s)
transform = 假
seq = “”
变量循环首 (k, k + 8 - 1, 2, j)
v = u [j]左移 (u [j + 1], 8)
如果真 (取反 (v ≥ 97 v ≤ 102 v ≥ 65 v ≤ 70 v ≥ 48 v ≤ 57))  ' [a-f] [A-F] [0-9]
跳出循环 ()
transform = 真
seq = seq + 字符 (v)
变量循环尾 ()
如果真 (取文本长度 (seq) ≠ 4)
transform = 假

判断 (transform)
new = 到字节集 (__Byte_From_Hex (取文本右边 (seq, 2)))到字节集 (__Byte_From_Hex (取文本左边 (seq, 2)))
u = 字节集替换 (u, n, 取字节集长度 (s) + 8, new)
n = 0

n = k

判断循环尾 ()
utf8 = 编码_Unicode到Utf8 (u)
如果真 (取字节集右边 (utf8, 1){ 0 })
utf8 = 取字节集左边 (utf8, 取字节集长度 (utf8) - 1)
返回 (utf8)
子程序名返回值类型公开备 注
__Byte_To_Hex文本型 
参数名类 型参考可空数组备 注
Byte字节型
变量名类 型静态数组备 注
hi整数型 
lo整数型 
s文本型 
s = “0123456789abcdef”
hi = Byte ÷ 16 + 1
lo = Byte % 16 + 1
返回 (取文本中间 (s, hi, 1)取文本中间 (s, lo, 1))
子程序名返回值类型公开备 注
__Byte_From_Hex字节型 
参数名类 型参考可空数组备 注
ByteHex文本型
变量名类 型静态数组备 注
hi整数型 
lo整数型 
s文本型 
s = “0123456789abcdef”
hi = 寻找文本 (s, 取文本左边 (到小写 (ByteHex), 1), , ) - 1
lo = 寻找文本 (s, 取文本右边 (到小写 (ByteHex), 1), , ) - 1
返回 (左移 (hi, 4) + lo)


i支持库列表   支持库注释   
spec特殊功能支持库


注意:返回的是字节集数据是utf-8, 不是unicode

\uaabb 对应 Unicode字节集 {bb, aa}

下面这个代码用于转换不支持的字符,或者用 `https://www.jyshare.com/front-end/3602/`里面的`中文转Unicode`

```javascript
[i]function ToUnicode(text) {

[i]    var arr = []

[i]    for(var i=0; i
[i]        var c = text.charCodeAt(i);
[i]        var lo = (c & 255).toString(16).padStart(2,'0');
[i]        var hi = (c >> 8).toString(16).padStart(2,'0');
[i]        arr.push("\u" + hi + lo);
[i]    }
[i]    return arr.join('');
[i]}

[i]console.log(ToUnicode('요요哈哈'));
[i]```








本帖被以下淘专辑推荐:

结帖率:78% (7/9)

签到天数: 7 天

发表于 2024-8-16 12:27:51 | 显示全部楼层   江西省吉安市
wlp 发表于 2024-8-15 11:32
把utf-8转ansii无法显示的字符转成%uxxxx,本来就不是显示emoji之类的特色符号的 ...

感觉易语言本身可以显示的应该直接显示出来。
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 21 天

 楼主| 发表于 2024-8-15 11:32:45 | 显示全部楼层   广西壮族自治区贵港市
wanliyingxiap 发表于 2024-8-15 10:33
有问题, 【:】都转换不出来

把utf-8转ansii无法显示的字符转成\uxxxx,本来就不是显示emoji之类的特色符号的
回复 支持 反对

使用道具 举报

结帖率:78% (7/9)

签到天数: 7 天

发表于 2024-8-15 10:33:48 | 显示全部楼层   江西省吉安市
有问题, 【:】都转换不出来
回复 支持 反对

使用道具 举报

结帖率:17% (1/6)
发表于 2024-7-27 13:24:11 | 显示全部楼层   广东省广州市
楼主,请问可以通过你这个实现显示VX里的emoji符号吗,比如❀电车跟油车
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 10 天

发表于 2024-6-29 18:33:25 | 显示全部楼层   贵州省毕节市
功德无量
回复 支持 反对

使用道具 举报

结帖率:90% (27/30)

签到天数: 19 天

发表于 2024-6-18 13:33:33 | 显示全部楼层   山东省济宁市
多谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (5/5)

签到天数: 24 天

发表于 2024-5-10 22:50:19 | 显示全部楼层   广东省广州市
wlp 发表于 2024-5-8 08:12
现在可以了,直接改好的

u 不是数组么
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 21 天

 楼主| 发表于 2024-5-10 21:15:48 | 显示全部楼层   广西壮族自治区贵港市
本帖最后由 wlp 于 2024-5-10 21:32 编辑
hxnr 发表于 2024-5-7 16:42
为啥这个代码可以跑起来
k = u  + 左移 (u , 8)     这里什么意思? 运行不起来啊  K是整数    u是字节 ...

取字节集数据(取字节集中间(u,i, 2), #短整数型)  的意思
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2024-5-8 21:01:05 | 显示全部楼层   河南省周口市
好东西,支持
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表