替换UTF-8字符

时间:2014-07-30 17:16:32

标签: javascript jquery html5 utf-8

我正在开发一个jquery库jspdf。上面的库不支持UTF-8字符。有什么办法可以通过使用正则表达式或任何其他方法删除我的html字符串中的所有引号UTF-8字符。

PSEDO CODE:

$(htmlstring).replace("utf-8 quotes character" , "") 

2 个答案:

答案 0 :(得分:8)

首先:如果它不支持Unicode,我建议你停止使用jsPDF。这是2014年中期,缺乏支持应该意味着两年前该项目的死亡。但这只是我个人的信念,而不是你正在寻找的答案的一部分。

如果jsPDF只支持ANSI(一个255个字符的块,而不是ASCII的127个字符块),那么你可以简单地对\ xFF以上的所有内容进行正则表达式替换:

"lolテスト".replace(/[\u0100-\uFFFF]/g,'');
// gives us "lol"

如果您只想摆脱引号(但可能会留下jsPDF打破unicode),您可以根据它们在unicode地图中的位置使用“只是引号”的模式:

string.replace(/[\u2018-\u201F\u275B-\u275E]/g, '')

将捕获['‘','’','‚','‛','“','”','„','‟','❛','❜','❝','❞'],当然您可能想要做的是用相应的安全字符替换它们。好消息:只需为刚刚出现的列表创建一个替换数组,并使用它。

2017年修改

ES6以\u{...}模式的形式为unicode字符串引入了一个新模式,它可以在花括号内部执行“任意数量的hexdigits”,因此完整的Unicode 9兼容regexp现在将是:

// we can't use these in a regexp directly, unfortunately
a = '\u{100}';
b = '\u{10FFF0}';
re = new RegExp(`[${a}-${b}]`,'g');
c = "lolテスト".replace(re, '');

答案 1 :(得分:1)

使用

$(htmlstring).replace(/[^\x00-\x7F]/g,'')

删除所有非ascii charakter

(通过regex-any-ascii-character