WCF不支持汉语的问题
时间:2011-06-04
来源:互联网
如题, 本人做了个WCF跨域访问应用, 在客户端输入User对象, 然后通过UserName和UserPasswrod判断用户是否正确登录, 如果用户名(UserName)为英语,登录没有问题,一旦换成汉语用户名(UserName)为汉语,就不能够正确登录了,(并且VisualStudio2008的文本框字符集只能选择GB2312和西欧字符),我的客户端代码如下:
复制内容到剪贴板
{
using (UserLoginClient proxy = new UserLoginClient())
{
string username = Encoding.GetEncoding("UTF-8").GetString(Encoding.GetEncoding("utf-8").GetBytes(this.txtUserName.Text.Trim()));//此处将用户名设置为UTF-8格式
User userinfo = proxy.Login(username, this.txtUserPwd.Text.Trim());
if (userinfo.Username == null)
{
MessageBox.Show("没有用户");
}
else
{
string message =
userinfo.Uid.ToString() + "\n\t" +userinfo.Username + "\n\t" +
userinfo.Password + "\n\t" +//多余部分省略userinfo.Salt.ToString();
this.txtShowMessage.Text = message;
}
}
}
服务器端代码如下
代码:
private void btnLogin_Click(object sender, EventArgs e){
using (UserLoginClient proxy = new UserLoginClient())
{
string username = Encoding.GetEncoding("UTF-8").GetString(Encoding.GetEncoding("utf-8").GetBytes(this.txtUserName.Text.Trim()));//此处将用户名设置为UTF-8格式
User userinfo = proxy.Login(username, this.txtUserPwd.Text.Trim());
if (userinfo.Username == null)
{
MessageBox.Show("没有用户");
}
else
{
string message =
userinfo.Uid.ToString() + "\n\t" +userinfo.Username + "\n\t" +
userinfo.Password + "\n\t" +//多余部分省略userinfo.Salt.ToString();
this.txtShowMessage.Text = message;
}
}
}
复制内容到剪贴板
{
User userinfo = new User();
if (userName.Equals("admin") && userPass.Equals("admin"))
{
userinfo.Uid = 1;
//string userpass = Encoding.UTF8.GetString(Encoding.GetEncoding("utf-8").GetBytes(this.txtUserPwd.Text.Trim()));
userinfo.Username = Encoding.UTF8.GetString(Encoding.GetEncoding("utf-8").GetBytes("仰天长啸"));
userinfo.Nickname = "admin";
userinfo.Password = "admin";
userinfo.Spaceid = 1;
//多余部分省略
userinfo.Newsletter = 1;
userinfo.Salt = "Salt";
}
return userinfo;
}
当客户端用户名文本框输入"仰天长啸"之后,未取出用户对象 代码:
public User Login(string userName, string userPass){
User userinfo = new User();
if (userName.Equals("admin") && userPass.Equals("admin"))
{
userinfo.Uid = 1;
//string userpass = Encoding.UTF8.GetString(Encoding.GetEncoding("utf-8").GetBytes(this.txtUserPwd.Text.Trim()));
userinfo.Username = Encoding.UTF8.GetString(Encoding.GetEncoding("utf-8").GetBytes("仰天长啸"));
userinfo.Nickname = "admin";
userinfo.Password = "admin";
userinfo.Spaceid = 1;
//多余部分省略
userinfo.Newsletter = 1;
userinfo.Salt = "Salt";
}
return userinfo;
}
作者: 渭浊 发布时间: 2011-06-04
问题就是出在这个汉字编码上。2008的系统汉字都是UNICODE编码。你在别的程序里用UNICODE编辑好汉字,然后复制到你的源文件里,再试一下。
作者: sharingbar 发布时间: 2011-06-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28