Tjena
Har en sajt som jag precis konverterat från "vanlig" ISO (kommer inte ihåg vad den heter..) chatset.
Nu när jag konverterat så har tre tecken tillkommit på några av undersidorna.
Dessa tecken är:

...och var plötsligt där när jag kollade på sajten efter bytet av charset.
Kollar man källkoden ligger dessa tre tecken där, men i sidorna (det är en aspsida som exekverar en htm-sida) och dessa tre tecken hamnar precis innan htm-sidan "körs".
Dessa tecken finns alltså INTE i någon av filerna.
Det är så att "huvudsidan" läser ur ett värde ur en querystring och sedan exekverar "vald" text.
Det konstiga är att det är bara på vissa av dessa "undersidor" som dessa tecken syns.
Vad kan vara fel?!
jarvkloMedlem sedan juli 20013 378 inlägg Hmm...
Låter som att din redigerare eller din programvara fått för sig att förse "dessa undersidor" med en "Byte Order Mark", dvs några inledande bytes som i kodform talar om på vilket sätt dokumentet använder UTF-8 (typ).
Det kan tillochmed vara så att du inte ser dem med din redigerare för att den är inställd på att *tolka* de tecknen som en dokumentinställning istället för att visa dem i redigeringsläget ;)
http://en.wikipedia.org/wiki/Byte_Order_Mark skrev:
The UTF-8 representation of the BOM is the byte sequence EF BB BF, which appears as the ISO-8859-1 characters "" in most text editors and web browsers not prepared to handle UTF-8.
Det är ju just dessa tecken som jag ser på vissa sidor. Som jag tolkar texten ovan så verkar det som om min sajt fortfarande tolkas som ISO-8859-1. Även fast jag har satt utf-8 som charset på sidan så verkar alltså servern ha nån annan inställning.
Jag kör IIS, kan jag ställa om så att IIS själv INTE ska bestämma charset?!
Byte order är inte tillämpligt för utf-8 och används bara av viss mjukvara (framförallt MS produkter vad jag förstått) för att se att ett dokument är utf-8.
Jag hade samma problem med PHP kod, men då för ett RSS flöde som vissa RSS tolkar inte klarade p.g.a. BOM.
Lösningen var då att välja att spara som "utf-8 cookie" i min ScITE editor.
Jag är dock inte på det klara med vad det kan vara i din situation.
Varifrån hämtar ASP filen data?
Blixtsystems skrev:
...Varifrån hämtar ASP filen data?
Dels från htm filer som laddas in med FSO och dels från en MS-SQL 2000 databas.
Du menar alltså att dessa tecken jag får ibland, kommer försvinna när jag lägger upp sidan skarpt?
Eller finns det nått annat jag ska göra?
Vad använder du för editor till HTML sidorna?
Editplus använder jag.
Det enda jag gjort idag på sidorna är att öppna alla och spara om dom som UTF-8.
Kan det ha med saken att göra?
Finns det nån bättre texteditor jag bör prova?
Jag tror det skall gå att välja att spara med eller utan BOM i editplus, men vad alternativen heter vet jag inte.
Själv kör jag som sagt med ScITE och kan välja mellan "utf-8" vilket är med BOM och "utf-8 cookie" som är utan.
zcorpanMedlem sedan dec. 20042 245 inlägg Det verkar som att webbläsaren dekodar din HTML som windows-1252. Vad skickar servern för Content-Type HTTP header?
Parameters:
URL = [url]http://www.********.se/%5Fnewpage/[/url]
UAG = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
AEN =
REQ = GET ; VER = 1.1 ; FMT = AUTO
Sending request:
GET /%5Fnewpage/ HTTP/1.1
Host: [url]www.********.se[/url]
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Connection: close
• Finding host IP address...
• Host IP address = ***.**.***.**
• Finding TCP protocol...
• Binding to local socket...
• Connecting to host...
• Sending request...
• Waiting for response...
Receiving Header:
HTTP/1.1·200·OK(CR)(LF)
Connection:·close(CR)(LF)
Date:·Thu,·30·Nov·2006·14:15:22·GMT(CR)(LF)
Server:·Microsoft-IIS/6.0(CR)(LF)
X-Powered-By:·ASP.NET(CR)(LF)
Content-Length:·16658(CR)(LF)
Content-Type:·text/html(CR)(LF)
Set-Cookie:·ASPSESSIONIDSQDTTSRC=CKJBFGFDODHHAJBCKHIBMHLA;·path=/(CR)(LF)
Cache-control:·private(CR)(LF)
(CR)(LF)
End of Header (Length = 264)
Ja, vad säger den?
Hittade du något alternativ för att spara dina HTML filer utan BOM i Editplus?
Hjälpte inte det?
zcorpanMedlem sedan dec. 20042 245 inlägg
Content-Type:·text/html(CR)(LF)
Alltså ingen charset-parameter.
Antingen kan du konfigurera servern att lägga till en charset-parameter:
Content-Type: text/html; charset=utf-8
För Apache kan du göra det med httpd.conf eller .htaccess, om du använder något serverskriptspråk kan du använda det för att sätta HTTP headers.
Annars om du inte kan modifiera HTTP headers kan du ange enkodningen med HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
[...]
Här är delar av mitt huvud:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
Är nått tokigt där, jag tycker det ser rätt ut.
zcorpanMedlem sedan dec. 20042 245 inlägg Det ser rätt ut.
Kommer det fram  i alla webbläsare? I så fall misstänker jag att det är ASP som dekodar i windows-1252 och konverterar det till utf-8, eller nåt i den stilen. Det är nåt fel på serversidan. Det är möjligt att det blir bra om du sparar filerna utan BOM, men jag tror det egentliga problemet ligger någon annanstans (tex ASP).
Blir andra icke-ascii-tecken rätt? Tex åäö och ☺?
TroxyMedlem sedan mars 20041 505 inlägg Om du kör ASP kanske det hjälper med att sätta en header där? Kanske inte gör någon skillnad...
Testa lägga följande allra först upp i koden:
Response.Addheader("Content-Type", "text/html; charset=utf-8")
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
Detta är samma tecken som jag får när jag sparar en asp-fil som utf-8 i Notepad och sedan öppnar den i HomeSite. Uppmärksammade det när jag trixade med variabelinläsning för Flash och VbScript.
Blixtsystems skrev:
Hittade du något alternativ för att spara dina HTML filer utan BOM i Editplus?
Hjälpte inte det?
Jo, efter mycket om och men så hittade jag det i Editplus:
Document => Permanent settings... => Files => "Do not add Byte Order Mark to UTF-8 files"
Då försvann dessa tecken (provade på en ny sajt jag håller på med, i PHP, men med samma sak i internet explorer), så jag tror att det ska funka nu, men ska testa lite till.
En annan sak när vi ändå är inne på ämnet. Nu ska jag göra en större sajt i PHP / MySQL på fem olika språk.
Är det nått speciellt jag ska tänka på, förutom att spara alla filer som UTF-8?
zcorpanMedlem sedan dec. 20042 245 inlägg Ställa in databasen på utf8_unicode_ci och använda htmlspecialchars() istället för htmlentities() i PHP, och se till att filerna är utan BOM.
Okej, ska jag alltså använda htmlspecialchars() på all input-data från formulär osv?
Spelar det någon roll om jag använder InnoDB eller MyISAM och vilken av dessa två ska jag välja?
Nu är nått konstigt igen.
Trots att "Do not add Byte order mark to UTF-8 files.." är ibockat och jag har öppnat sidorna som UTF-8 och sparat om dessa som UTF-8, så försvinner inte dessa tre tecken.
Som ni ser lite högre upp så provade jag samma sak med en PHP fil häromdagen och det funkade direkt.
Nu får jag inte bort dessa tecken.
Kan någon hjälpa mig med det här?!