utf-8 - 如何在solidity中发出utf8消息
问题描述
如何在下面的代码中发出 utf8 消息(如中文)?
pragma solidity ^0.7.2;
modifier buyerOnly() {
require(
msg.sender == buyer,
"For buyer ONLY" //<<==utf8?
);
它会抛出中文错误。
解决方案
我想您是在问如何将 unicode 字符插入字符串。
免责声明:我不懂中文,但我使用谷歌翻译将“For Buyer only”转换为简体中文:仅适用于需求。然后我使用在线工具将这个字符串转换为下面的 \U 和 \x 转义序列。
每个用于文字字符串编码的solidity docs:
\xNN 采用十六进制值并插入适当的字节,而 \uNNNN 采用 Unicode 代码点并插入 UTF-8 序列。
所以不要尝试这个:
modifier buyerOnly() {
require(
msg.sender == buyer,
"For buyer ONLY" //<<==utf8?
);
这(UTF-16 转义将被转换回 UTF-8)
modifier buyerOnly() {
require(
msg.sender == buyer,
"\u4ec5\u9002\u7528\u4e8e\u4e70\u65b9"
);
或者这个(单独插入 UTF-8 字节):
modifier buyerOnly() {
require(
msg.sender == buyer,
"\xe4\xbb\x85\xe9\x80\x82\xe7\x94\xa8\xe4\xba\x8e\xe4\xb9\xb0\xe6\x96\xb9"
);
推荐阅读
- regex - 在文件扩展名前查找 n 个字符
- android - kotlin 中的“对象”是否会收集垃圾
- c++ - SDL_CreateWindow 函数中使用的指针
- c# - WPF 编辑 Datagrid 单元格值然后保存,在编辑时我正在加载“中断模式下的应用程序”
- php - 如何在不使用 AnnotationRegistry 的情况下自动加载自定义注释类?
- mysql - 对我的数据库 MySQL 上的语法有点困惑
- javascript - 如何使用 LocalStorage 从待办事项列表中删除项目
- amibroker - 在 amibroker 中获取最大的多个数组
- angularjs - 自定义指令中的角度函数绑定不起作用
- c++ - 在 C 和 C++ 中将 int 值转换为 char 指针差异