2016-10-17 10 views
1

До сих пор я глупо думал, что JavaScript encodeURI() даст тот же результат, что и ASP classic Server.URLEncode(). Вот пример, когда это не удается:Устранение разрывов между JS encodeURI и ASP Server.URLEncode

encodeURI("戦艦帝国") = "%E6%88%A6%E8%89%A6%E5%B8%9D%E5%9B%BD" 
Server.URLEncode("戦艦帝国") = "%C6%88%A6%C8%89%A6%C5%B8%9D%C5%9B%BD" 

Так как я нахожусь в системе, которая использует оба языка, есть ли способ кодирования в одном, который гарантированно производить ту же кодировку, как метод в других?


(Примечание: Server.UrlEncode(str) якобы эквивалентно HttpUtility.UrlEncode(str, Response.ContentEncoding))

+0

Я попытался преобразовать результат, но javascript кажется неправильным. http://meyerweb.com/eric/tools/dencoder/ – Vixed

+0

@Vixed - этот инструмент и [этот инструмент] (http://www.cafewebmaster.com/online_tools/utf8_encode) соответствуют значению javascript (т. Е. одно начало '% E6'). Вероятно, потому что они используют javascript .... – feetwet

+0

** <% = server.UrlEncode ("戦 艦 帝国")%> ** возвращает **% E6% 88% A6% E8% 89% A6% E5% B8% 9D% E5% 9B% BD ** Я думаю, что это всего лишь вопрос кодировки. – Vixed

ответ

1

Это работает для меня, но не забудьте сохранить с помощью UTF-8

<%Response.charset="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
    </head> 
    <body> 
    <%=Server.UrlEncode("戦艦帝国")%> 
    <br /> 
    <script>document.write(encodeURI("戦艦帝国"))</script> 
    </body> 
</html>