在ColdFusion中将字符串转换为utf-8 unicode

时间:2016-10-07 19:51:42

标签: unicode coldfusion

我需要将字符串转换为UTF8编码格式,我不知道如何继续。

ColdFusion中是否有任何函数将字符串转换为UTF-8,例如在此website上?

例如,在“stackoverflow.com/questions/ask”中输入上述网站即可得到结果:

  

\ X73 \ X74 \ X61 \ X63 \ X6B \ x6F \ X76 \ X65 \ X72 \ X66 \ X6C \ x6F \ X77 \ X2E \ X63 \ x6F \ X6D \ X2F \ X71 \ X75 \ X65 \ X73 \ X74 \ X69 \ x6F \ x6E \ X73 \ X2F \ X61 \ X73 \ X6B

我对编码不太熟悉,但我的指示是将字符串编码为UTF-8。我给出的例子给出了下面的编码结果。

  

/ RE / R / 434 /吨// 4R3 / T434 /4吨/ T3 / 3 /4吨/ 43tt / 53 /

我不确定这是否是编码字符串的真实表示,或者它是否只是输入以提供可视化示例。是否有这样的格式?它与第一个例子的格式不同吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

我认为您可以使用CharsetDecode()CharsetEncode()的组合来完成此任务。

<cfset my_string = "test">
<cfset binary_my_string = CharsetDecode(my_string, "ASCII")>
<cfset utf8_my_string = CharsetEncode(binary_my_string, "utf-8")>

您只需要在我的示例中用the correct initial encoding替换&#34; ASCII&#34;

答案 1 :(得分:1)

<cfset str = "stackoverflow.com/questions/ask">
<cfset hexStr = "">

<cfloop index="i" from="0" to="#len(str)-1#">
    <!--- Pick out each character in the string. Remember that charAt() starts at index 0. --->
    <cfset ch = str.charAt(i)>
    <!--- The decimal value of the Unicode character. ColdFusion uses the Java UCS-2 representation of Unicode characters, up to a value of 65536.  --->
    <cfset charDecVal = asc(ch)>
    <!--- The decimal value of the character, upper-casing the letters.--->
    <cfset charHexVal = uCase(formatBaseN(charDecVal,"16"))>
    <!--- Append the characters together into a Hex string, using delimiter '\x' --->
    <cfset hexStr = hexStr & "\x" & charHexVal>
</cfloop>
<cfscript>
    writeoutput(hexStr);
</cfscript>