这段时间客户提出要将发布韩文的需求,蛮麻烦的,解决了存入数据库和显示的问题,但是数据修改的时候很麻烦,虽然问题不大,但是很恼人,找了一天了,还是没有很好的解决方案,就自己写了一个,问题是解决了,但是个人认为肯定还有更好的解决方案,希望各位不吝赐教!
一、韩文存入数据库解决方案
1.数据库存储多语言的字段要用NText or Nvarchar,才支持多语言,以unicode存储
2.Sql语句如 insert table (a) values(N'value')才可以,update也同样了
3.web页面要用utf-8编码,最好加上<META http-equiv="Content-Type" content="text/html; charset=Unicode">
二、显示数据库中的韩文
韩文存到数据库中,HTML格式的如:& # 5 1 0 6 4 ;& # 5 3 5 5 2 ;& # 4 5 3 6 7 ; (인터넷 )
我添加到数据库中,显示的时候没有问题,因为用HTML控件就可以解决了,如:DIV,总之在HTML格式下面就能解决的。
三、修改数据库中的韩文
修改数据库中的韩文分二种情况:
1、HTML编辑器:这个就是支持HTML的,所以根本不需要理会就可以直接转换,不需要我们操心
2、对于标题之类的短的文字,我们采用的TextBox中就出现了大问题,他显示不了韩文显示的效果是& # 5 1 0 6 4 ;& # 5 3 5 5 2 ;& # 4 5 3 6 7 ;(인터넷 ),这个我找了很久的解决的方案,都没有解决的。
具体方案如下:
只要TextBox支持HTML格式就OK了,但偏偏TextBox只支持纯文本,HTMLEnCode、HTMLDeCode函数无计可施。
此时我采用一个使用HTML作为中转的方案暂时解决了修改韩文的问题
步骤:
1 前台建立一个服务器端DIV:<div id="txtChg" runat="server"></div>
2 后台将HTML格式数据赋值到DIV上
txtChg.InnerHtml = Dr["sContent"].ToString();
3 隐藏Div:txtChg.Attributes["style"] = "display:none";
4 前台将Div的数值赋给TextBox:onload="javascript:document.getElementById('txtTitle').value = document.getElementById('txtChg').innerHTML"
OK,就这样暂时解决了这个烦人的小问题,如果哪位仁兄有更好的方案,请指教!