【发布时间】:2019-10-09 07:11:15
【问题描述】:
如何使用 WWW 类将来自 TextMesh pro 的表情符号存储在数据库中,以将包含表情符号的字符串作为 URL 中的参数发布?
我在将表情符号从 TextMesh Pro 文本字段导入我的数据库时遇到问题。当我尝试时,表情符号数据以纯文本形式存储,如下所示:ðŸ〜,或像这样�或像这样□,取决于我尝试的编码。
我有一个 php 脚本,它使用 sql 语句将文本存储在我的 mysql 数据库中。当我在浏览器中手动键入 php 脚本的 url 并将表情符号添加为参数它工作得非常好时,它会正确存储表情符号(因为我已经将数据库的排序规则设置为utf8mb4)。
这是我不明白的部分:如果我通过我的 c# 代码获取包含表情符号的字符串并使用该字符串作为参数访问 php 文件,则它不起作用。它将表情符号存储为mojibake。 (ðŸ〜,这个字符序列应该是这样的:????)。
否则它会很好地存储文本,所以下面的代码没有问题。 下面是它的外观:
public IEnumerator UpdateChatCR(string gameID, string text)
{
string hash = Md5Sum(gameID + secretKey);
print("posting to chat db: " + text);
string post_url = updateChatURL + "&game_id=" + gameID + "&text=" + text + "&hash=" + hash;
WWW www = new WWW("http://" + post_url);
yield return www;
if (www.error != null)
{
print("There was an error updating the chat in the DB: " + www.error);
}
else
{
//print(www.text);
}
}
我尝试了不同的文本编码方式,但老实说,我现在不知道自己在做什么。我尝试了以下代码的不同变体,但没有运气:
byte[] bytes = Encoding.UTF8.GetBytes(tmpField.text);
string encodedText = Encoding.Default.GetString(bytes);
这几天我一直在寻找答案。我已经到了这样的地步,我意识到我可能必须阅读一本关于编码和表情符号的书,除非有人可以帮助我......
感谢您的宝贵时间。
【问题讨论】:
-
您能否澄清帖子中显示的那个奇怪代码的目的(将 UTF8 字节作为其他编码读取)?不完全确定这与您的问题有何关系...
-
@Machavity 该副本不适用于此处,因为他们已经声明 PHP 和 MySQL 方面的工作正常。 Magnus,我建议您修改您的问题以专注于 C#。如果 PHP 工作正常,则无需在问题中对其进行标记。提供更多 C# 代码,包括 minimal reproducible example。
-
这是一个有趣的编辑——你声称“所以问题不在于我的 MySQL 数据库,也不在于我的 PHP。”然而你已经删除了 C#...所以你能澄清一下你有问题吗?考虑edit您的帖子,以确认您可以使用硬编码值查看您想要的任何内容并显示数据(最好以字节为单位)和您尝试过的实际代码......
-
删除 c# 标签是一个错误。我现在做了另一个编辑。我不确定要包含哪些代码。另外我对编码的了解很少,所以当我不知道问题是什么时,我很难理解问题。我知道这没有帮助......
-
你是如何将表情符号放入 textmesh pro 中的?
标签: c# unity3d url encoding emoji