echoSweMedlem sedan nov. 20041 189 inlägg Hej!
Jag vill skicka åäö via ASP .Net, vilket det inte klarar av ordentligt.. (lösning nån?) så jag tänkte att jag ju bara kan ändra vad som skickas.
Kan någon hjälpa med med ett JavaScript som loopar igenom en Textbox och letar efter åäö (men också tecken utanför ascii), och ändrar dem till deras ä motsvarighet?
Kan man skriva något i den här stilen?
box = getElementByID("myTxtBox");
while(!box.Text(i).IsEmpty) {
select case (box.Text(i)) {
case å: box.Text(i) = &aouml; break;
case ä: box.Text(i) = &aoul; break;
case ö: box.Text(i) = ö break;
}
i++;
}
eller hur ska jag skriva? Går det att göra? (Jag vet att html tecknen är fel, men kan detta fungera, eller kan man göra det i ASP .Net?
Peter SMedlem sedan dec. 20025 483 inlägg Hej!
Vad är en Textbox? Är det ett <select>-element eller en <input>-sekvens (eller kanske något annat)?
Vilket som kan du använda dig av escape()-funktionen som omvandlar t ex "å", "ä", "ö" till deras hexadecimala motsvarigheter.
På mottagarsidan använder du sedan unescape() för att transformera tillbaka dem.
:)
echoSweMedlem sedan nov. 20041 189 inlägg <textarea name="body" rows="5" cols="30" id="body"></textarea>
en sådan menade jag.
Problemet är att jag skickar innehållet i den till en email adress, så det måste konverteras till HTML. Hur fungerar escape() funktionen?
Peter SMedlem sedan dec. 20025 483 inlägg För att få ett hum om hur escape() fungerar kan du testa detta:
<form>
<textarea id="body">å</textarea>
<button type=button" onclick="alert( escape(document.getElementById('body').value) )">...</button>
</form>
:)
echoSweMedlem sedan nov. 20041 189 inlägg Okej, så den omvandlar tecken till URL-tecken... Så du menar att jag ska skicka det till användaren och sedan omvandla alla tecken tillbaka till å ä ö med hjälp av javascript i meddelandet? vad händer om man inte har javascript på i så fall? HTML är ju alltid på menar jag.
Fungerar inte loopen som jag skrev ovan?
Tack för svaret i alla fall. jag ska testa att omvandla det, men hur får man tillbaka tecknen? unescape()?
Peter SMedlem sedan dec. 20025 483 inlägg Ok, min lösning är nog inte den mest optimala i detta fall. Å andra sidan är det ju heller inte säkert att mottagarens e-postklient kan visa HTML-formatterad text.
Vad är det som inte fungerar med ASP.NET? Vad får du för resultat? Det kanske är så att ditt problem är mer lämpat för ASP.NET-forumet.
:)
echoSweMedlem sedan nov. 20041 189 inlägg Hej!
Jo, html är säkert i det här fallet, eftersom jag har kontroll över "servern" som jag skickar det till. Så allt jag behöver göra är att omvandla alla tecken i textarea till html tecknen.
ASP .Net klarar inte av några tecken utöver ASHII. Det är problemet. Jag skickar med 7bit, istället för CodeBase 64 encoding.
Jag testade dock det du skrev, och det fungerade nästan. Problemet är att e-postmottagaren inte kunde visa javascript. Alltså kunde jag inte konvertera tillbaks det.
Men är det omöjligt att referera till de enskilda tecknen i en textarea via javascript? Som jag visade i min kod (som en array)? :) tack annars.
EDIT:
ASP .Net klarar mer än ACHII, men det gör inte System.Web.Mail.
Peter SMedlem sedan dec. 20025 483 inlägg Har du specificerat teckenkodningen till att vara iso-8859-1? Jag gjorde en snabbsökning och fann denna sida: http://www.systemwebmail.com/faq/3.1.aspx. Kan den hjälpa?
Visst går det att referera till enskilda tecken i <textarea>n, men det är med största sannolikhet inte den bästa lösningen ;)
echoSweMedlem sedan nov. 20041 189 inlägg Nej, den hjälper inte. Jag har redan sökt riktigt mycket. Det jag skrev i förra inlägget stämmer.
Jo, annars måste jag köpa en komponent, vilket jag inte har råd till. Hur refererar man till ett tecken då?
/Yenke
Peter SMedlem sedan dec. 20025 483 inlägg Det är effektivare att använda reguljära uttryck:
function repl(){
var elm = document.getElementById("body");
elm.value = elm.value
.replace(/å/g, "&aring;")
.replace(/Å/g, "&Aring;")
.replace(/ä/g, "&auml;")
.replace(/Ä/g, "&Auml;")
.replace(/ö/g, "&ouml;")
.replace(/Ö/g, "&Ouml;");
}
<form>
<textarea id="body"></textarea>
<button type="button" onclick="repl()">Ersätt!</button>
</form>
:)
JojoxxMedlem sedan juni 20004 308 inlägg Skrev ihop ett alternativ som tar allt utanför a-z,A-Z och 0-9.
String.prototype.htmlencode=function(){
var e="";
for(var n=0;n<this.length;n++){ e+=(!this.substring(n,n+1).match(/[a-zA-Z0-9]/))?"&#"+this.charCodeAt(n)+";":this.substring(n,n+1); }
return e;
}
//...
elm.value=elm.value.htmlencode();
Peter SMedlem sedan dec. 20025 483 inlägg Det var ju synnerligen ett bättre alternativ.
:bire
echoSweMedlem sedan nov. 20041 189 inlägg Det är helt underbart! Nu fungerar det äntligen! Tack så hemskt mycket Peter och Jojjox för er fina hjälp!
Om ni vill ha all den färdiga koden till en hyfsat avancerad e-mailsida i ASP .Net så är det bara att säga till!
Kram Henke :)