【问题标题】:Urdu language issue, base64 stores long unreadable string乌尔都语问题,base64 存储长不可读的字符串
【发布时间】:2014-09-09 12:00:16
【问题描述】:

我将乌尔都语文本分配给 c# 中的变量并将其插入数据库(SendMessages 表),它完美地保存乌尔都语消息而无需任何修改,很好,但是当任何手机收到该消息时,它会显示为 ??? ???????????????????, 为什么 ?我检查了所有兼容 urdu 的手机,它们可以完美接收其他 urdu 消息,但不是这个。

代码asp.net:

String MessageLanguage= Convert.ToString(ViewState["LanguageCode"]); //

                        if (MessageLanguage == "ur")
                        {
                            String UrduMsg = ComplaintCode +" "+"اپکی سثیکایت درج کردی گیؑ ھے۔ سثیکایت کوڈ یہ ہے";
                            quebiz.Insert(lblContact.Text, UrduMsg, null, Convert.ToInt32(lblComplainantID.Text), null, null);
                            ViewState["LanguageCode"] = null;

                        }

简而言之,从 C# 传递到 sql 表的 urdu 消息是完美的,没有问题,但是在手机中接收到相同的短信后,它就不能那样工作了。我试过base64转换像

String UrduMsg = ComplaintCode +" "+"اپکی سثیکایت درج کردی گیؑ ھے۔ سثیکایت کوڈ یہ ہے";
                            var UrduMsgBytes = System.Text.Encoding.UTF8.GetBytes(UrduMsg);
                            var Base64EncodedUrduMsg = Convert.ToBase64String(UrduMsgBytes);

但它导致在数据库中保存一个长字符串,就像它呈现yu98yhr9h93h99hd9h9ash9dhas9yr090u0usjaosfhiehhw8hw一样。 列上的排序规则为 ON,列为 Nvarchar(1600)。
为什么 ?帮助 ?我在 sql server 2014 中使用 asp.net C#.net 4.0。

【问题讨论】:

  • 您将字符串存储在数据库中,当您读取它时,?????会出现吗?
  • 没有出现在手机中,只是“?????????????????????”标记出现
  • 您是否使用 N 将数据插入 SQL Server?我不确定,但也许你的问题就是因为这个。
  • 例如:insert into tableName(name) values(N'"+درج کردی+"')
  • 请不要发布重复的问题。这似乎与此相同:stackoverflow.com/questions/25720874/… 您需要按照每个问题得出结论,不要只问一个新问题。

标签: c# sql asp.net .net


【解决方案1】:

我不确定,但您可以尝试插入命令的N 参数。

例如使用:

insert into tableName(name) values(N'"+درج کردی+"')

【讨论】:

  • 是的,但在我的情况下如何附加 N ?就像我试图输入 N 但它引发语法错误这个怎么放?
  • @JohnNash:quebiz 是什么实例?也许它有一个属性来设置这个属性。
  • 它是 QueueBizz 类的一个实例
  • @JohnNash QueueBizz 是您的自定义课程吗?如果是,QueueBizz类的Insert方法的实现是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
相关资源
最近更新 更多