瀏覽代碼

Merge branch 'bonus_manager' into bonus_rate

stanley-king 7 年之前
父節點
當前提交
234728c64a
共有 1 個文件被更改,包括 50 次插入3 次删除
  1. 50 3
      data/resource/mobile/ugc/js/main.js

+ 50 - 3
data/resource/mobile/ugc/js/main.js

@@ -5,6 +5,53 @@ var host = (function () {
 })();
 
 
+var Expression = {
+    utf16toEntities:function(str)
+    {
+        var patt=/[\ud800-\udbff][\udc00-\udfff]/g;
+        // 检测utf16字符正则
+        str = str.replace(patt, function(char)
+        {
+            var H, L, code;
+            if (char.length===2) {
+                H = char.charCodeAt(0);
+                // 取出高位
+                L = char.charCodeAt(1);
+                // 取出低位
+                code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00;
+                // 转换算法
+                return "!XMMZ!" + code + ";";
+            } else {
+                return char;
+            }
+        });
+        return str;
+    },
+    entitiestoUtf16:function(str)
+    {
+        // 检测出形如〹形式的字符串
+        var strObj=this.utf16toEntities(str);
+        var patt = /!XMMZ!\d+;/g;
+        var H,L,code;
+
+        var arr = strObj.match(patt)||[];
+        for (var i=0;i<arr.length;i++)
+        {
+            code = arr[i];
+            code=code.replace('!XMMZ!','').replace(';','');
+            // 高位
+            H = Math.floor((code-0x10000) / 0x400)+0xD800;
+            // 低位
+            L = (code - 0x10000) % 0x400 + 0xDC00;
+            code = "!XMMZ!"+code+";";
+            var semojj = String.fromCharCode(H,L);
+            strObj = strObj.replace(code,semojj);
+        }
+        return strObj;
+    }
+};
+
+
 (function(){
     if($('.button_null.button_vote').length >0 && $('.button_null.button_vote').text().indexOf('已经')) {
         $('input[type="radio"]').attr('disabled', 'disabled');
@@ -350,7 +397,7 @@ var ReplyItem = function (comment, members) {
             '<div class="like">' + isLike() +
             '</div>' +
             '</div>' +
-            '<p class="msg">' + commentdata['content'] + sub +
+            '<p class="msg">' + Expression.entitiestoUtf16(commentdata['content']) + sub +
             '</p>' + load_btn +
             '</div>';
         return html;
@@ -360,7 +407,7 @@ var ReplyItem = function (comment, members) {
             '<span class="reply_people" data-comment_id="' + comment['comment_id'] + '">' + proxy().getNickName(comment['user_id']) + '</span>' +
             '回复' +
             '<span class="reply_people" data-comment_id="' + comment['comment_id'] + '"  data-response_id="' + comment['response_id'] + '">' +
-            proxy().getNickName(comment['to_user']) + '</span>:' + comment['content'] + '</p>';
+            proxy().getNickName(comment['to_user']) + '</span>:' + Expression.entitiestoUtf16(comment['content']) + '</p>';
         return subHtml;
     };
     var empty = function () {
@@ -549,7 +596,7 @@ var CommentsBox = function () {
                 return;
             }
             $('.loader').show();
-            var textVal = $('#comments').val();
+            var textVal = Expression.utf16toEntities($('#comments').val());
             if (Comment_type == 'special_id') {
                 url = host + '/mobile/index.php?act=member_ugc&op=comment&client_type=ajax&special_id=' + specialId + '&content=' + encodeURI(textVal);
                 get_ajax(url, function (data) {