经典ASP - 如何将UTF-8字符串转换为UTF-16?

时间:2014-09-03 11:09:51

标签: asp-classic kannel

我知道已有帖子:Classic ASP - How to convert a UTF-8 string to UCS-2?

但我的情况另一个。
我想将UTF-8转换为UCS-2BE 例如,UTF-8“МухтарамМизоч”中的这段文字转换为“CEB0 @ 0< 87> G”。

例如在PHP中我可以使用就绪函数iconv("utf-8","ucs-2be","Мухтарам Мизоч");
但在经典ASP中找不到任何解决方案。
此解决方案需要通过Kannel发送Unicode SMS文本。

2 个答案:

答案 0 :(得分:1)

很难回答这个问题,但我觉得很有必要,因为你已经做了一个普遍的假设,许多人在使用ASP,PHP或你正在使用的任何语言进行编码时都会做出这样的假设。

  

在网页开发中,编码本质上与

相关联      

用于保存网页的源代码

只看iconv reference下的评论让我笑得很开心,因为有很多人不理解这个话题。

以PHP代码段为例

iconv("utf-8","ucs-2be","Мухтарам Мизоч");

这将有效,提供以下内容

  • 页面作者使用UTF-8编码保存文件(大多数现代编辑器都有某种形状或形式的此选项)。
  • 客户端Internet浏览器知道应该通过HTML中的元标记将页面作为UTF-8处理,

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    

    或指定HTTP Content-Type Header


就经典ASP而言,它是您所需要的;

  • 确保页面保存为UTF-8编码,其中包括依赖项的所有#include个文件。

  • 通过在页面顶部指定此预处理指令(必须是第一行),告诉IIS您的页面为UTF-8

    <%@Language="VBScript" CodePage = 65001 %>
    
  • 告诉浏览器您正在使用的编码

    <%
    'Tell server to send all strings back to the client as UTF-8
    'while also setting the charset in the HTTP Content Type header.
    Responce.CodePage = 65001
    Response.ContentType = "html/text"
    Response.Charset = "UTF-8"
    %>
    

<强>更新

Classic ASP不支持UCS-2UTF-16 LE)或UCS-2BEUTF-16 BE),指定CodePage(1200或1201)将结果;

ASP 0203 - Invalid CodePage Value

在阅读了一下关于Kannel的内容之后,看起来好像您可以控制发送到SMS网关的字符集,我建议您尝试使用UTF-8发送它。

<强>链接

答案 1 :(得分:0)

在kannel.conf的SMSC部分添加alt-charset = UCS-2(或UCS-2BE)就足够了。 Kannel很好地发送到这个charset的smsc。