Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

json - SerializeJSON doesn't encode UTF8 characters in ColdFusion 9

I'm having some issues with ColdFusion and JSON. My users have filenames and other key words with characters like ? in them which is causing me a pain when I have to pass them back via JSON.

When I use the magic JSON command on my variable:

<cfcontent type="application/json"> 
<cfset variables.stGalleryItem = StructNew() />
<cfset variables.stGalleryItem["imagePath"] = siteRoot & '/images/350460/hell?.txt' />
<cfset variables.stGalleryItem["title"] = '????'  />
<cfset variables.stGalleryItem["author"] = 'HI' />
<cfset variables.stGalleryItem["text"] = 'aa' />
<cfset ArrayAppend(variables.arrGallery,variables.stGalleryItem) />

<cfoutput>
  #Trim(SerializeJSON(variables.arrGallery))#
</cfoutput>

The character that gets spit out is ?, which does no one any good.

Is there anything I can do to preserve my users' ??

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You need to specify the Character Set in your CFCONTENT tag. I tried this code in Google Chrome without charset and it returned the text correctly. However, FireFox 3.6 returned the incorrect characters you listed.

This correctly returns the UTF-8 characters in Chrome, FireFox and MSIE:

<cfcontent type="application/json; charset=utf-8">

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...