JunidecodeのようなJavaライブラリを使用することをお勧めします。
https://github.com/gcardone/junidecode
UTF8およびUTF16文字列をASCII7に変換します。例:
- äéöè=aeoe
- マイクのカフェ=マイクのカフェ
- ℡=TEL
- 北亰=ベイジン
- まさゆきたけださん=武田正幸さん
- ⠏⠗⠑⠍⠊⠑⠗=プレミア
- ราชอาณาจักรไทย=raach`aanaacchakraithy
- Ελληνικά=エレニカ
- Москвa=モスクワ
- Հայաստան=ハヤスタン
- ℰℳℒℰ=例
完全なColdFusionベースのデモ(Junidecode JARファイルが必要)を共有しました:
https ://dev.to/gamesover/convert-unicode-strings-to-ascii-with-coldfusion-junidecode-lhf
コード関数は次のとおりです。
<cfscript>
function JUnidecode(inputString){
var JUnidecodeLib = "";
var response = "";
var temp = {};
temp.encoder = createObject("java", "java.nio.charset.Charset").forName("utf-8").newEncoder();
temp.isUTF = temp.encoder.canEncode(arguments.inputString);
if (temp.isUTF){
/* NFKC: UTF Compatibility Decomposition, followed by Canonical Composition */
temp.normalizer = createObject( "java", "java.text.Normalizer" );
temp.normalizerForm = createObject( "java", "java.text.Normalizer$Form" );
arguments.inputString = temp.normalizer.normalize( javaCast( "string", arguments.inputString ), temp.normalizerForm.NFKC );
}
try {
JUnidecodeLib = createObject("java", "net.gcardone.junidecode.Junidecode");
response = JUnidecodeLib.unidecode( javacast("string", arguments.inputString) );
} catch (any e) {
response = "ERROR: JUnidecode is not installed";
}
return trim(Response.replaceAll("\[\?\]", ""));
}
function isDiff(compareArr, val, pos){
return (pos GT arrayLen(comparearr) OR comparearr[pos] neq val);
}
</cfscript>