Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Ερωτήσεις και απαντήσεις σχετικές με την HTML, XHTML και την κατασκευή σελίδων για το Web.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από panos78 » 27 Νοέμ 2005 17:09

Αναζητώ πρόγραμμα με το οποίο να μπορώ να μετατρέψω κείμενο που εμφανίζεται σε ιστοσελίδα σε κώδικα unicode.
Έχω βρει κάποιες σελίδες που κάνουν αυτή την μετατροπή, αλλά θα ήθελα να είχα εγκατεστημένο κάποιο πρόγραμμα για να μην χρειάζεται να συνδέομαι για να κάνω τις μετατροπές που θέλω.
Αν ζητάω πολλά, πείτε το για να το πάρω απόφαση ότι θα δουλεύω με τις σελίδες που βρήκα.
;)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από skeftomilos » 28 Νοέμ 2005 02:16

Το πρόγραμμα που ζητάς ακούγεται εξαιρετικά απλό. Πιθανότατα μια utility με JavaScript 20 γραμμών να αρκεί. Αν θέλεις δώσε ένα μικρό παράδειγμα λίγων γραμμών με το αρχικό κείμενο, και μετά με το ίδιο κείμενο όπως θέλεις να μετατραπεί. Ύστερα Θα μπορώ να σου πω αν είναι πράγματι εύκολο να γίνει ή όχι. :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από panos78 » 28 Νοέμ 2005 10:29

Παράδειγμα:
Η λέξη
Θεσσαλονίκη να γίνει
&# 920;&# 949;&# 963;&# 963;&# 945;&# 955;&# 959;&# 957;&# 943;&# 954;&# 951;
Έβαλα ένα κενό ανάμσε στα &# και στον αριθμό γιατί αλλιώς έγγραφε πάλι Θεσσαλονίκη.
Κάτι τέτοιο θέλω και αν είναι δυνατόν να γίνεται αυτόματα, δηλαδή κάθε φόρα που θα γράφω ένα γράμμα στο ένα πεδίο να μου εμφανίζει τον unicode κώδικα στο δεύτερο πεδίο.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από skeftomilos » 28 Νοέμ 2005 13:10

Το παρακάτω αλλάζει μόνο τους ελληνικούς χαρακτήρες. Είναι αρκετό ή πρέπει να αλλάζουν όλοι;

unicoder.htm

Κώδικας: Επιλογή όλων

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1253">
    <title>Unicoder</title>
    <style type="text/css">
      body &#123; font-family&#58; verdana; &#125;
      textarea &#123;
        width&#58; 100%;
        height&#58; 150px;
      &#125;
    </style>
    <script type="text/javascript">
      window.onload = function&#40;&#41; &#123;
        document.getElementById&#40;'transform-button'&#41;.onclick = function&#40;&#41; &#123;
          var source = document.getElementById&#40;'source'&#41;.value
          var output = source.replace&#40;/&#91;αάβγδεέζηήθιίϊΐκλμνξοόπρσςτυύϋΰφχψωώ&#93;/ig, function&#40;$1&#41; &#123;
            return '&#' + $1.charCodeAt&#40;0&#41; + ';'
          &#125;&#41;
          document.getElementById&#40;'output'&#41;.value = output
        &#125;
      &#125;
    </script>
  </head>
  <body>
    <h2>Unicoder</h2>
    <small>Αρχικό κείμενο&#58;</small>
    <textarea id="source"></textarea><br>
    <button id="transform-button">Μετατροπή</button>
    <textarea id="output" readonly></textarea><br>
  </body>
</html>
Live Demo
:pint:
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
alkisg
Δημοσιεύσεις: 265
Εγγραφή: 03 Ιουν 2005 11:53
Τοποθεσία: Ιωάννινα
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από alkisg » 28 Νοέμ 2005 13:46

Άμα έχεις frontpage, αρκεί να επιλέξεις windows-1252 και να γράψεις κάτι... Στον source code θα βγουν αυτόματα &#xxx...
(αν και προτιμώ τη λύση -αυτού-που-πρώτα-σκέφτεται-και-μετά-μιλάει-)

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από panos78 » 28 Νοέμ 2005 13:58

@skeftomilos
Σε ευχαριστώ.
Μια ερώτηση.
Υπάρχει τρόπος με το που γράφω έναν χαρακτήρα να εμφανίζεται αυτόματα χωρίς να πατάω το κουμπί μετατροπή;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από skeftomilos » 29 Νοέμ 2005 07:19

Χα χα! Alkisg είσαι μάλλον ο πρώτος που «έπιασες» τι σημαίνει το nick. :D Πάντως πρέπει να διευκρινιστεί πως πρόκειται για διαρκές ζητούμενο, καθόλου δεδομένο δεν είναι! :P

@panos78: Υπάρχει τρόπος και είναι και απλός. Μόνο που δεν εγγυώμαι καλή απόδοση, μπορεί να υπάρξουν κολλήματα αν το αρχικό κείμενο μεγαλώσει αρκετά σε μέγεθος. Εκεί που παγιδεύεται το συμβάν onclick του κουμπιού, παγίδεψε και το onkeyup του textarea. Δηλαδή βρες τη γραμμή:

Κώδικας: Επιλογή όλων

document.getElementById&#40;'transform-button'&#41;.onclick = function&#40;&#41; &#123;
...και άλλαξέ την έτσι:

Κώδικας: Επιλογή όλων

document.getElementById&#40;'transform-button'&#41;.onclick = document.getElementById&#40;'source'&#41;.onkeyup = function&#40;&#41; &#123;
Κατά τον ίδιο τρόπο μπορεί να παγιδευτεί και το onmouseup ώστε να πιάνει και τις αλλαγές με το mouse (cut και paste). Θα ήταν απλούστερο αν υπήρχε συμβάν onchange. Στην πραγματικότητα υπάρχει, αλλά δε λειτουργεί όπως θα περίμενε κανείς.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από panos78 » 07 Μαρ 2006 14:04

Συγνώμη που επανέρχομαι αλλά ο παραπάνω κώδικας πως μπορεί να γίνει και για τα umlaut των γερμανικών;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από skeftomilos » 07 Μαρ 2006 22:05

Τα γράμματα που «πιάνει» το script είναι αυτά μέσα στις αγκύλες της Regular expression:

Κώδικας: Επιλογή όλων

/&#91;αάβγδεέζηήθιίϊΐκλμνξοόπρσςτυύϋΰφχψωώ&#93;/ig
Μπορούν να προστεθούν και άλλα ή να αλλαχτούν τα υπάρχοντα. Ίσως να χρειαστεί και αλλαγή του charset της σελίδας.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από panos78 » 08 Μαρ 2006 02:30

Άλλαξα λιγάκι τον κώδικα και για χαρακτήρες εκτός των ελληνικών.
Παραθέτω τον κώδικα προς κάθε ενδιαφερόμενο και γιατί θέλω να ρωτήσω κάτι σχετικά με ένα προβληματάκι που έχω:

Κώδικας: Επιλογή όλων

<p class=seitentitel>Μετατροπή χαρακτήρων σε Unicode<hr size=3 noshade><script language="javascript" type="text/javascript"> 
function display&#40;&#41;&#123;if&#40;document.convert.ascii.value != ''&#41;&#123;var vText = document.convert.ascii.value; 
var vEncoded = display2&#40;vText&#41;; document.convert.unicode.value = vEncoded;&#125;&#125; 
function display2&#40;source&#41;&#123;result = '';for &#40;i=0; i<source.length; i++&#41; result += '&#' + source.charCodeAt&#40;i&#41; + ';'; 
return result;&#125; 
function CopyToClipboard&#40;&#41; &#123; document.convert.unicode.focus&#40;&#41;;
document.convert.unicode.select&#40;&#41;; 
CopiedTxt = document.selection.createRange&#40;&#41;;
CopiedTxt.execCommand&#40;"Copy"&#41;; &#125;
function PasteFromClipboard&#40;&#41; &#123; document.convert.ascii.focus&#40;&#41;;
PastedText = document.convert.ascii.createTextRange&#40;&#41;;
PastedText.execCommand&#40;"Paste"&#41;; &#125; 
</SCRIPT><form class="normal" name="convert" style="text-align&#58; center"><b>Κείμενο προς μετατροπή&#58;<br><input class="button" style="color&#58; blue;font-weight&#58; bold" type="button" value="Επικόλληση από το πρόχειρο" onClick="PasteFromClipboard&#40;&#41;" /><br /><textarea ID="ascii" type="text" name="ascii" rows="10" cols="78" onload="putFocus&#40;0,0&#41;" onfocus="display&#40;&#41;" onkeyup="display&#40;&#41;"></textarea><br />Το κείμενο μετά τη μετατροπή&#58;</b><br /><input class="button" style="color&#58; green;font-weight&#58; bold" type="button" value="Αντιγραφή στο πρόχειρο" onClick="CopyToClipboard&#40;&#41;" /><br /><textarea ID="unicode" input type="text" name="unicode" rows="11" cols="78" readonly /></textarea><br /><input class="button" style="color&#58; red;font-weight&#58; bold" type="reset" value="Εκκαθάριση των πλαισίων" /></form>
Το προβληματάκι είναι το εξής:
Όταν σβήνω ολόκληρες λέξεις με το πλήκτρο DELETE δεν ανανεώνεται το πλαίσιο της μετατροπής.
Επίσης όταν χρησιμοποιώ το BACKSPACE μέχρι το τέλος του κειμένου ο πρώτος χαρακτήρας του κειμένου δεν σβήνεται στο πλαίσιο της μετατροπής.
Υπάρχει κάποιος τρόπος το πλαίσιο της μετατροπής να ανανεώνεται και με αυτά τα πλήκτρα;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από skeftomilos » 09 Μαρ 2006 07:09

Αυτός ο έλεγχος είναι που εμποδίζει το τελευταίο γράμμα να εξαφανιστεί:

Κώδικας: Επιλογή όλων

if&#40;document.convert.ascii.value != ''&#41;&#123;...
Όσο για το delete ολόκληρης λέξης δεν μπόρεσα να αναπαράγω το πρόβλημα.

Btw, βρε συ συμμάζεψε λίγο τον κώδικα, πώς να τον διαβάσει άνθρωπος έτσι που είναι; :P
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Μετατροπή χαρακτήρων ΗΤΜL σε unicode

Δημοσίευση από panos78 » 09 Μαρ 2006 12:43

Βρήκα τη λύση:
Έβαλα και έναν μετρητή των χαρακτήρων!
Παραθέτω τον κώδικα για όποιον ενδιαφέρεται:

Κώδικας: Επιλογή όλων

<p class=seitentitel>Μετατροπή χαρακτήρων σε Unicode<hr size=3 noshade>
<script language="javascript" type="text/javascript"> 
function display&#40;&#41;
&#123;
	if&#40;document.convert.ascii.value != ''&#41;
	&#123;
		var vText = document.convert.ascii.value; 
		var vEncoded = display2&#40;vText&#41;; document.convert.unicode.value = vEncoded;
	&#125;
	else
	&#123;
		var vText = document.convert.ascii.value = '';
		var vEncoded = display2&#40;vText&#41;; document.convert.unicode.value = vEncoded;
	&#125;
&#125; 
function display2&#40;source&#41;
&#123;
	result = '';for &#40;i=0; i<source.length; i++&#41; result += '&#' + source.charCodeAt&#40;i&#41; + ';'; 
	return result;
&#125; 

function CopyToClipboard&#40;&#41; 
&#123;
	document.convert.unicode.focus&#40;&#41;;
	document.convert.unicode.select&#40;&#41;; 
	CopiedTxt = document.selection.createRange&#40;&#41;;
	CopiedTxt.execCommand&#40;"Copy"&#41;; 
&#125;

function PasteFromClipboard&#40;&#41; 
&#123;
	document.convert.ascii.focus&#40;&#41;;
	PastedText = document.convert.ascii.createTextRange&#40;&#41;;
	PastedText.execCommand&#40;"Paste"&#41;; 
&#125; 
var IE = &#40;document.all&#41; ? 1 &#58; 0;
var DOM = 0; 
if &#40;parseInt&#40;navigator.appVersion&#41; >=5&#41; 
&#123;
	DOM=1
&#125;;
function txtshow&#40; txt2show &#41; 
&#123;
	if &#40;DOM&#41; 
	&#123;
		var viewer = document.getElementById&#40;"txtmsg"&#41;;
		viewer.innerHTML=txt2show;
	&#125;
	else if&#40;IE&#41; 
	&#123;
		document.all&#91;"txtmsg"&#93;.innerHTML=txt2show;
	&#125;
&#125;

function keyup&#40;what&#41; 
&#123;
  var str = new String&#40;what.value&#41;;
  var len = str.length;
  var showstr = '<b><font color=red>' + len + '</font> χαρακτήρ';
  if &#40;len != 1&#41; showstr += 'ες</b>';
  else showstr += 'ας</b>';
  txtshow&#40; showstr &#41;;
&#125;
</script>
<form class="normal" name="convert" style="text-align&#58; center">
<b>Κείμενο προς μετατροπή&#58;</b><br>
<span id="txtmsg" class="normal"></span><br>
<input class="button" style="color&#58; blue;font-weight&#58; bold" type="button" value="Επικόλληση από το πρόχειρο" onClick="PasteFromClipboard&#40;&#41;"><br>
<textarea ID="ascii" type="text" name="ascii" rows="10" cols="78" onload="putFocus&#40;0,0&#41;" onfocus="display&#40;&#41;; keyup&#40;this&#41;" onkeyup="display&#40;&#41;; keyup&#40;this&#41;"></textarea><br>
<b>Το κείμενο μετά τη μετατροπή&#58;</b><br>
<input class="button" style="color&#58; green;font-weight&#58; bold" type="button" value="Αντιγραφή στο πρόχειρο" onClick="CopyToClipboard&#40;&#41;"><br>
<textarea ID="unicode" input type="text" name="unicode" rows="11" cols="78" readonly></textarea><br>
<input class="button" style="color&#58; red;font-weight&#58; bold" type="reset" value="Εκκαθάριση των πλαισίων">
</form>
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Απάντηση

Επιστροφή στο “HTML και XHTML”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης