I don't really understand exactly what you're doing with this, and I've never heard of Replace() or ReplaceNoCase() having any UTF-8 issues, but this should at least get you going in the right direction.
I ran into a similar issue using ColdFusion 9/Windows. Using rereplacenocase(textMessage, "[hash]", newValue, "all") was throwing a "String index out of range: -1" error on a value returned from a MSSQL nvarchar datatype. (If I changed the word "hash" to anything else it would work, but possibly because it wasn't finding a match.) I copied the original "textMessage" value out of the database, pasted it into my text editor, copied it back and pasted it into the database and ran the script again and then it worked. I think replacenocase() may have issues with UTF-8 or possibly extended-ASCII invisible characters.
Lakshmikanth S_13 wrote:
<cfset sndMsg = newReplace(sndMsg,"%EXPIRYDATE%",expiryDate,"ALL")>
Two fatal mistakes:
1) Invoking the function recursively with the variable sndMsg sends it into an infinite loop.
2) The last argument should be a boolean (True or False) rather than a string ("ALL").