代码here适用于将特殊字符转换为HTML实体。
http://jsbin.com/ETIjUpa/3/edit/
无论如何,我可以反转这个对象的键值对来翻译另一种方式吗?
似乎我应该可以做这样的事情,但我对如何扭转charAt()
的功能感到迷茫
//sorry long object
if (typeof escapeHtmlEntities == 'undefined') {
escapeHtmlEntities = function (text) {
return text.replace(/[\u00A0-\u2666<>\&]/g, function (c) {
return '&' + (escapeHtmlEntities.entityTable[c.charCodeAt(0)] || '#' + c.charCodeAt(0)) + ';';
});
};
// all HTML4 entities as defined here: http://www.w3.org/TR/html4/sgml/entities.html
// added: amp, lt, gt, quot and apos
var escapeHtmlEntities = {},
type = $("input[name=type]:checked").val();
if (type === "from") {
escapeHtmlEntities.entityTable = {
34: 'quot',
38: 'amp',
39: 'apos',
60: 'lt',
62: 'gt',
160: 'nbsp',
161: 'iexcl',
162: 'cent',
163: 'pound',
164: 'curren',
165: 'yen',
166: 'brvbar',
167: 'sect',
168: 'uml',
169: 'copy',
170: 'ordf',
171: 'laquo',
172: 'not',
173: 'shy',
174: 'reg',
175: 'macr',
176: 'deg',
177: 'plusmn',
178: 'sup2',
179: 'sup3',
180: 'acute',
181: 'micro',
182: 'para',
183: 'middot',
184: 'cedil',
185: 'sup1',
186: 'ordm',
187: 'raquo',
188: 'frac14',
189: 'frac12',
190: 'frac34',
191: 'iquest',
192: 'Agrave',
193: 'Aacute',
194: 'Acirc',
195: 'Atilde',
196: 'Auml',
197: 'Aring',
198: 'AElig',
199: 'Ccedil',
200: 'Egrave',
201: 'Eacute',
202: 'Ecirc',
203: 'Euml',
204: 'Igrave',
205: 'Iacute',
206: 'Icirc',
207: 'Iuml',
208: 'ETH',
209: 'Ntilde',
210: 'Ograve',
211: 'Oacute',
212: 'Ocirc',
213: 'Otilde',
214: 'Ouml',
215: 'times',
216: 'Oslash',
217: 'Ugrave',
218: 'Uacute',
219: 'Ucirc',
220: 'Uuml',
221: 'Yacute',
222: 'THORN',
223: 'szlig',
224: 'agrave',
225: 'aacute',
226: 'acirc',
227: 'atilde',
228: 'auml',
229: 'aring',
230: 'aelig',
231: 'ccedil',
232: 'egrave',
233: 'eacute',
234: 'ecirc',
235: 'euml',
236: 'igrave',
237: 'iacute',
238: 'icirc',
239: 'iuml',
240: 'eth',
241: 'ntilde',
242: 'ograve',
243: 'oacute',
244: 'ocirc',
245: 'otilde',
246: 'ouml',
247: 'divide',
248: 'oslash',
249: 'ugrave',
250: 'uacute',
251: 'ucirc',
252: 'uuml',
253: 'yacute',
254: 'thorn',
255: 'yuml',
402: 'fnof',
913: 'Alpha',
914: 'Beta',
915: 'Gamma',
916: 'Delta',
917: 'Epsilon',
918: 'Zeta',
919: 'Eta',
920: 'Theta',
921: 'Iota',
922: 'Kappa',
923: 'Lambda',
924: 'Mu',
925: 'Nu',
926: 'Xi',
927: 'Omicron',
928: 'Pi',
929: 'Rho',
931: 'Sigma',
932: 'Tau',
933: 'Upsilon',
934: 'Phi',
935: 'Chi',
936: 'Psi',
937: 'Omega',
945: 'alpha',
946: 'beta',
947: 'gamma',
948: 'delta',
949: 'epsilon',
950: 'zeta',
951: 'eta',
952: 'theta',
953: 'iota',
954: 'kappa',
955: 'lambda',
956: 'mu',
957: 'nu',
958: 'xi',
959: 'omicron',
960: 'pi',
961: 'rho',
962: 'sigmaf',
963: 'sigma',
964: 'tau',
965: 'upsilon',
966: 'phi',
967: 'chi',
968: 'psi',
969: 'omega',
977: 'thetasym',
978: 'upsih',
982: 'piv',
8226: 'bull',
8230: 'hellip',
8242: 'prime',
8243: 'Prime',
8254: 'oline',
8260: 'frasl',
8472: 'weierp',
8465: 'image',
8476: 'real',
8482: 'trade',
8501: 'alefsym',
8592: 'larr',
8593: 'uarr',
8594: 'rarr',
8595: 'darr',
8596: 'harr',
8629: 'crarr',
8656: 'lArr',
8657: 'uArr',
8658: 'rArr',
8659: 'dArr',
8660: 'hArr',
8704: 'forall',
8706: 'part',
8707: 'exist',
8709: 'empty',
8711: 'nabla',
8712: 'isin',
8713: 'notin',
8715: 'ni',
8719: 'prod',
8721: 'sum',
8722: 'minus',
8727: 'lowast',
8730: 'radic',
8733: 'prop',
8734: 'infin',
8736: 'ang',
8743: 'and',
8744: 'or',
8745: 'cap',
8746: 'cup',
8747: 'int',
8756: 'there4',
8764: 'sim',
8773: 'cong',
8776: 'asymp',
8800: 'ne',
8801: 'equiv',
8804: 'le',
8805: 'ge',
8834: 'sub',
8835: 'sup',
8836: 'nsub',
8838: 'sube',
8839: 'supe',
8853: 'oplus',
8855: 'otimes',
8869: 'perp',
8901: 'sdot',
8968: 'lceil',
8969: 'rceil',
8970: 'lfloor',
8971: 'rfloor',
9001: 'lang',
9002: 'rang',
9674: 'loz',
9824: 'spades',
9827: 'clubs',
9829: 'hearts',
9830: 'diams',
338: 'OElig',
339: 'oelig',
352: 'Scaron',
353: 'scaron',
376: 'Yuml',
710: 'circ',
732: 'tilde',
8194: 'ensp',
8195: 'emsp',
8201: 'thinsp',
8204: 'zwnj',
8205: 'zwj',
8206: 'lrm',
8207: 'rlm',
8211: 'ndash',
8212: 'mdash',
8216: 'lsquo',
8217: 'rsquo',
8218: 'sbquo',
8220: 'ldquo',
8221: 'rdquo',
8222: 'bdquo',
8224: 'dagger',
8225: 'Dagger',
8240: 'permil',
8249: 'lsaquo',
8250: 'rsaquo',
8364: 'euro'
};
} else {
escapeHtmlEntities.entityTable = {
AElig: "198",
Aacute: "193",
Acirc: "194",
Agrave: "192",
Alpha: "913",
Aring: "197",
Atilde: "195",
Auml: "196",
Beta: "914",
Ccedil: "199",
Chi: "935",
Dagger: "8225",
Delta: "916",
ETH: "208",
Eacute: "201",
Ecirc: "202",
Egrave: "200",
Epsilon: "917",
Eta: "919",
Euml: "203",
Gamma: "915",
Iacute: "205",
Icirc: "206",
Igrave: "204",
Iota: "921",
Iuml: "207",
Kappa: "922",
Lambda: "923",
Mu: "924",
Ntilde: "209",
Nu: "925",
OElig: "338",
Oacute: "211",
Ocirc: "212",
Ograve: "210",
Omega: "937",
Omicron: "927",
Oslash: "216",
Otilde: "213",
Ouml: "214",
Phi: "934",
Pi: "928",
Prime: "8243",
Psi: "936",
Rho: "929",
Scaron: "352",
Sigma: "931",
THORN: "222",
Tau: "932",
Theta: "920",
Uacute: "218",
Ucirc: "219",
Ugrave: "217",
Upsilon: "933",
Uuml: "220",
Xi: "926",
Yacute: "221",
Yuml: "376",
Zeta: "918",
aacute: "225",
acirc: "226",
acute: "180",
aelig: "230",
agrave: "224",
alefsym: "8501",
alpha: "945",
amp: "38",
and: "8743",
ang: "8736",
apos: "39",
aring: "229",
asymp: "8776",
atilde: "227",
auml: "228",
bdquo: "8222",
beta: "946",
brvbar: "166",
bull: "8226",
cap: "8745",
ccedil: "231",
cedil: "184",
cent: "162",
chi: "967",
circ: "710",
clubs: "9827",
cong: "8773",
copy: "169",
crarr: "8629",
cup: "8746",
curren: "164",
dArr: "8659",
dagger: "8224",
darr: "8595",
deg: "176",
delta: "948",
diams: "9830",
divide: "247",
eacute: "233",
ecirc: "234",
egrave: "232",
empty: "8709",
emsp: "8195",
ensp: "8194",
epsilon: "949",
equiv: "8801",
eta: "951",
eth: "240",
euml: "235",
euro: "8364",
exist: "8707",
fnof: "402",
forall: "8704",
frac12: "189",
frac14: "188",
frac34: "190",
frasl: "8260",
gamma: "947",
ge: "8805",
gt: "62",
hArr: "8660",
harr: "8596",
hearts: "9829",
hellip: "8230",
iacute: "237",
icirc: "238",
iexcl: "161",
igrave: "236",
image: "8465",
infin: "8734",
int: "8747",
iota: "953",
iquest: "191",
isin: "8712",
iuml: "239",
kappa: "954",
lArr: "8656",
lambda: "955",
lang: "9001",
laquo: "171",
larr: "8592",
lceil: "8968",
ldquo: "8220",
le: "8804",
lfloor: "8970",
lowast: "8727",
loz: "9674",
lrm: "8206",
lsaquo: "8249",
lsquo: "8216",
lt: "60",
macr: "175",
mdash: "8212",
micro: "181",
middot: "183",
minus: "8722",
mu: "956",
nabla: "8711",
nbsp: "160",
ndash: "8211",
ne: "8800",
ni: "8715",
not: "172",
notin: "8713",
nsub: "8836",
ntilde: "241",
nu: "957",
oacute: "243",
ocirc: "244",
oelig: "339",
ograve: "242",
oline: "8254",
omega: "969",
omicron: "959",
oplus: "8853",
or: "8744",
ordf: "170",
ordm: "186",
oslash: "248",
otilde: "245",
otimes: "8855",
ouml: "246",
para: "182",
part: "8706",
permil: "8240",
perp: "8869",
phi: "966",
pi: "960",
piv: "982",
plusmn: "177",
pound: "163",
prime: "8242",
prod: "8719",
prop: "8733",
psi: "968",
quot: "34",
rArr: "8658",
radic: "8730",
rang: "9002",
raquo: "187",
rarr: "8594",
rceil: "8969",
rdquo: "8221",
real: "8476",
reg: "174",
rfloor: "8971",
rho: "961",
rlm: "8207",
rsaquo: "8250",
rsquo: "8217",
sbquo: "8218",
scaron: "353",
sdot: "8901",
sect: "167",
shy: "173",
sigma: "963",
sigmaf: "962",
sim: "8764",
spades: "9824",
sub: "8834",
sube: "8838",
sum: "8721",
sup: "8835",
sup1: "185",
sup2: "178",
sup3: "179",
supe: "8839",
szlig: "223",
tau: "964",
there4: "8756",
theta: "952",
thetasym: "977",
thinsp: "8201",
thorn: "254",
tilde: "732",
times: "215",
trade: "8482",
uArr: "8657",
uacute: "250",
uarr: "8593",
ucirc: "251",
ugrave: "249",
uml: "168",
upsih: "978",
upsilon: "965",
uuml: "252",
weierp: "8472",
xi: "958",
yacute: "253",
yen: "165",
yuml: "255",
zeta: "950",
zwj: "8205",
zwnj: "8204"
};
}
$(document).ready(function () {
$("body").on("click", "#process", function () {
var text = $("#input").val();
$("#input").val(escapeHtmlEntities(text));
});
});
}
我包含了jQuery标记,以防有一种使用jQuery实现这一点的非常简单的方法
答案 0 :(得分:1)
你可以对你的对象进行反向查找,但是使用jQuery你可以使用一个小技巧来解码这些字符,如下所示:
var val = $('textarea').val();
$('textarea').val( $('<div/>').html(val).text() );
基本上你是通过jQuery创建一个虚拟div
元素,用你的编码实体填充它,然后检索元素的text node,从而将它分配给textarea的值。 / p>