首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Web3.toAsei用于外语

Web3.toAsei用于外语
EN

Ethereum用户
提问于 2018-06-18 17:38:31
回答 1查看 828关注 0票数 1

我有一个函数,它以bytes32 _name作为参数,并将其存储在结构中。

假设_name是中文、韩文或日文,我从app.js_name转换为十六进制,将其传递给函数。

代码语言:javascript
运行
复制
App.contracts.Test.deployed().then(function(instance) {
            return instance.storeName(web3.toHex(name), { from: account });

现在,当我通过调用函数来检索name并使用web3.toAscii转换它时

代码语言:javascript
运行
复制
App.contracts.Test.deployed().then(function(instance) {                 
        return instance.getStruct.call();
    }).then(function(result) {

var name = web3.toAscii(result[1]);

该值将类似于ÁÁ8È。是web3.toAscii无法处理其他语言,还是应该只使用string _name

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-06-18 20:05:40

这里的危险标志当然是您正在使用web3.toAscii转换中文、韩文等。默认情况下,Ascii仅限于英语。

Solidity支持utf-8,是的,您可以获取和读取以utf-8编码(允许非英语字符)的名称。解决方案是将代码编码到utf-8中,然后rest全部由web3覆盖。

var chinese_string = '你好'; //hello var chinese_string_utf_encoded = '\xE4\xBD\xA0\xE5\xA5\xBD'; //checkout utf-8js

web3.toHex(a_utf_encoded); //returns "0xe4bda0e5a5bd"

现在使用web3.toUtf8将其解码回原来的中文文本。

web3.toUtf8("0xe4bda0e5a5bd"); //returns "你好"

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/51509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档