我写了这个函数,最后一行似乎错了*但它确实有效。有人可以解释这些东西是如何工作的吗?
function convertEncoding(str,from,to) {
var charSetObj = createobject("java", "java.nio.charset.Charset");
var e_to = charsetObj.forName(from);
var e_from = charsetObj.forName(to);
return e_from.decode(e_to.encode(str)).toString();
}
我在BlueDragon 7和7.1JX(不是开源)
我从这个功能中受到启发:http://acoderslife.com/index.cfm/blog/Converting-Text-From-UTF-8-to-ISO-8859-1
*我们最后的行动似乎是使用From编码。它应该是From.decode(string)然后是To.encode(decoding_string)
答案 0 :(得分:4)
它似乎关闭的原因是您交换了变量名称,因此它们无法准确表示内容:
var e_ to = charsetObj.forName( from ); //原始编码
var e_ 来自 = charsetObj.forName( to ); //新编码
它起作用的原因是因为最终语句通过交换变量位置来解释这一点,所以尽管它们的名称,代码实际上是这样做的:
return newEncoding.decode( originalEncoding.encode(str) ).toString();
显然最好修复变量名称,所以当你在六个月后遇到这段代码时,你不会摸不着头脑。
function convertEncoding(str, from, to) {
var charSetObj = createobject("java", "java.nio.charset.Charset");
var origEncoding = charsetObj.forName( arguments.from );
var newEncoding = charsetObj.forName( arguments.to );
return newEncoding.decode(origEncoding.encode( arguments.str )).toString();
}