0

我需要编写一份使用基于拉丁语言的措辞的合同。这需要特殊字符,例如é, ç, ã, ôetc....

我正在使用安全帽来编写它。

我在这里找到了一个例子,也使用了开放的 Zeppelin:

有效的例子

在此处输入图像描述

当试图在我的合同中写类似的东西时,我得到一个错误:Invalid character in string.

    contract Ouro is ERC20, Ownable {

    string public constant tokenMinuta = "Céu, Carraço"; // "Céu, Carraço" is the Problem to solve here

    constructor() ERC20("Ouro", "ORO") {
        _mint(msg.sender, 1000000000 * 10**decimals());
    }

    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }

}

然后,我将 UTF-8 编码添加到这些字符中,希望能够在 BSCScan 或 EtherScan 上正确编译:

IEstring public constant tokenMinuta = "C\xC3\xA9u, Carra\xC3\xA7o";

上面的编译应该在我的终端中看到这里: 在此处输入图像描述

但是,当我将源代码添加到 BSCScan 或 EtherScan 时,它不起作用。

未以人类可读方式编译的特殊字符

看看我在哪里添加了 UTF-8 - 我希望这将以人类可读的方式编译,而不是像这样:

在此处输入图像描述

我的问题是:如何在合同正文中写入这些特殊字符而不会出现编译错误,从而能够在 BSCSan 或 EtherScan上以人类可读的方式验证与这些字符的合同?就像我上面提供的第一个示例一样工作。

4

1 回答 1

1

您使用的 solc 编译器版本是什么?我正在使用 0.5.16 进行编译,它适用于源代码中的 UTF-8 字母。

不要对字符串中的这些字母进行 UTF-8 编码,它还不会被转译。

于 2021-05-02T07:31:34.933 回答