<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://bepo.fr/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-EvilUnicodeConverter.js</id>
	<title>MediaWiki:Gadget-EvilUnicodeConverter.js - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://bepo.fr/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-EvilUnicodeConverter.js"/>
	<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=MediaWiki:Gadget-EvilUnicodeConverter.js&amp;action=history"/>
	<updated>2026-05-09T20:02:21Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=MediaWiki:Gadget-EvilUnicodeConverter.js&amp;diff=15573&amp;oldid=prev</id>
		<title>A2 : Page créée avec « /* &quot;Evil Unicode Conversion&quot; script thingy for invisible unicode. [Version 0.0.5] Converts trouble unicode characters to hexidecimal entities, and then back to unicode on pag... »</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=MediaWiki:Gadget-EvilUnicodeConverter.js&amp;diff=15573&amp;oldid=prev"/>
		<updated>2009-09-06T02:25:56Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « /* &amp;quot;Evil Unicode Conversion&amp;quot; script thingy for invisible unicode. [Version 0.0.5] Converts trouble unicode characters to hexidecimal entities, and then back to unicode on pag... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* &amp;quot;Evil Unicode Conversion&amp;quot; script thingy for invisible unicode. [Version 0.0.5]&lt;br /&gt;
Converts trouble unicode characters to hexidecimal entities, and then back to unicode on page save.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
1. It may be tempting to leave them as entities on save, but certain MediaWiki: messages don&amp;#039;t take kindly to it.&lt;br /&gt;
2. Any of these registered characters that exist in the document as entities before load will be converted to decimal &lt;br /&gt;
entities. This allows pre-existing cases to remain un-reconverted on document save. So #x202e; would become #8238; on&lt;br /&gt;
load. Note that because of this, the ampersand escaping is no longer required.&lt;br /&gt;
3. This list now includes most characters of type:&lt;br /&gt;
 * Unicode spaces, whitespaces, non-breaking spaces.&lt;br /&gt;
 * Directional control, directional override, BiDi formatting.&lt;br /&gt;
 * Paragraph/newline formatting and visible-zero-width.&lt;br /&gt;
 * Silly unicode not suitable for markup.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
if(wgAction == &amp;#039;edit&amp;#039; || wgAction == &amp;#039;submit&amp;#039;) {&lt;br /&gt;
  var eucTextbox = &amp;#039;wpTextbox1&amp;#039;;&lt;br /&gt;
} else if(wgCanonicalSpecialPageName == &amp;#039;Upload&amp;#039;) {&lt;br /&gt;
  var eucTextbox = &amp;#039;wpUploadDescription&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
if(window.eucTextbox) addOnloadHook(unconvertEvilUnicodeChars);&lt;br /&gt;
var eucChars = [160,173,847,1536,1537,1538,1539,1757,1807,3852,4447,4448,5760,6155,6156,6157,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8209,8232,8233,8234,8235,8236,8237,8238,8239,8239,8260,8287,8288,8289,8290,8291,8292,8298,8299,8300,8301,8302,8303,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12288,12350,65279,65408,65532]&lt;br /&gt;
&lt;br /&gt;
function unconvertEvilUnicodeChars() {&lt;br /&gt;
  var obj = document.getElementById(eucTextbox);&lt;br /&gt;
  if(!obj) return&lt;br /&gt;
  if(obj.readOnly) return&lt;br /&gt;
&lt;br /&gt;
  //add handlers to convert just before save/preview/upload&lt;br /&gt;
  var eucBtns = [&amp;#039;wpSave&amp;#039;,&amp;#039;wpPreview&amp;#039;,&amp;#039;wpDiff&amp;#039;,&amp;#039;wpUpload&amp;#039;];&lt;br /&gt;
  var numbut = 0;&lt;br /&gt;
  for(var i=0;i&amp;lt;eucBtns.length;i++) {&lt;br /&gt;
    var btn = getElementByIdOrName(eucBtns[i]);&lt;br /&gt;
    if(btn) { &lt;br /&gt;
      addClickHandler(btn,convertEvilUnicodeChars);&lt;br /&gt;
      numbut++;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if(numbut == 0) return&lt;br /&gt;
&lt;br /&gt;
  var token = getElementByIdOrName(&amp;#039;wpEditToken&amp;#039;);&lt;br /&gt;
  if(token.value.indexOf(&amp;#039;!euc!&amp;#039;) == -1) { &lt;br /&gt;
    token.value += &amp;#039;!euc!&amp;#039;;&lt;br /&gt;
  } else {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(window.eucCharsCustom) eucChars = eucCharsCustom&lt;br /&gt;
  var str = obj.value;&lt;br /&gt;
&lt;br /&gt;
  for(var i=0;i&amp;lt;eucChars.length;i++) {&lt;br /&gt;
    var pattern = new RegExp(&amp;#039;&amp;amp;#x&amp;#039; + hx4(eucChars[i]) + &amp;#039;;&amp;#039;,&amp;#039;g&amp;#039;);&lt;br /&gt;
    if(str.search(pattern)!=-1) str = str.replace(pattern,&amp;#039;&amp;amp;#&amp;#039; + eucChars[i] + &amp;#039;;&amp;#039;)&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for(var i=0;i&amp;lt;eucChars.length;i++) {&lt;br /&gt;
    var pattern = new RegExp(String.fromCharCode(eucChars[i]),&amp;#039;g&amp;#039;);&lt;br /&gt;
    if(str.search(pattern)!=-1) str = str.replace(pattern,&amp;#039;&amp;amp;#x&amp;#039; + hx4(eucChars[i]) + &amp;#039;;&amp;#039;)&lt;br /&gt;
  }&lt;br /&gt;
  obj.value = str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function convertEvilUnicodeChars() {&lt;br /&gt;
  var token = getElementByIdOrName(&amp;#039;wpEditToken&amp;#039;);&lt;br /&gt;
  if(token.value.indexOf(&amp;#039;!euc!&amp;#039;) != -1) {&lt;br /&gt;
    token.value = token.value.replace(/!euc!/,&amp;#039;&amp;#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(window.eucCharsCustom) eucChars = eucCharsCustom&lt;br /&gt;
  var obj = document.getElementById(eucTextbox);&lt;br /&gt;
  var str = obj.value;&lt;br /&gt;
&lt;br /&gt;
  for(var i=0;i&amp;lt;eucChars.length;i++) {&lt;br /&gt;
    var pattern = new RegExp(&amp;#039;&amp;amp;#x&amp;#039; + hx4(eucChars[i]) + &amp;#039;;&amp;#039;,&amp;#039;g&amp;#039;);&lt;br /&gt;
    if(str.search(pattern)!=-1) str = str.replace(pattern,String.fromCharCode(eucChars[i]))&lt;br /&gt;
  }&lt;br /&gt;
  obj.value = str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hx4(dec) {&lt;br /&gt;
  var h = dec.toString(16);&lt;br /&gt;
  while(h.length &amp;lt; 4) h = &amp;#039;0&amp;#039; + h;&lt;br /&gt;
  return h;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Needed because the upload form submit has no ID&lt;br /&gt;
function getElementByIdOrName(idorname,par) {&lt;br /&gt;
  var parent = (!par) ? document : par&lt;br /&gt;
  if(parent.getElementById(idorname)) {&lt;br /&gt;
    return parent.getElementById(idorname);&lt;br /&gt;
  } else if(parent.getElementsByName(idorname)[0]) {&lt;br /&gt;
    return parent.getElementsByName(idorname)[0];&lt;br /&gt;
  } else {&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>A2</name></author>
	</entry>
</feed>