webForumDet fria alternativet

FCKeditor, Response.Write, åäö och ett mysterium

ASP

8 svar · 2 161 visningar · startad av Snakes

Medlem sedan okt. 2004392 inlägg
Frågan#1

Hej!

Först måste jag säga: Läs noga innan ni skriver något!

Jag använder FCKeditor och har ett litet problem när jag skriver:
Response.Write "ä"

Nu till det konstiga, När jag öppnar sidan där jag skrev write "ä" så är det tomt. Visa Källa är också tomt.

När jag skriver:
Response.Write "LäL"

Så skriver den bara ut LL

Skriver jag LäL innan <% eller efter %> då skriver den ut LäL, det funkar alltså. Då har det väl inget med Content-Type, eller charset att göra?

I alla fall, tar jag bort <!-- #include virtual="files\fckeditor.asp" --> så funkar det bra med Response.Write och <% %>.

Alltså måste det vara något FCKeditor gör, men jag verkar inte hitta något fel i koden. FCKeditor är kopplad till Javascript, men det har inget att göra med det eftersom det funkar med ä innan <% eller efte %>. Plus, man måste aktivera classen innan javascript kommer med i bilden.

Så här ser FCKeditor.asp ut

<%
Class FCKeditor

	Private sBasePath
	Private sInstanceName
	Private sWidth
	Private sHeight
	Private sToolbarSet
	Private sValue
	Private sWrite

	Private oConfig

	Private Sub Class_Initialize()
		sBasePath		= "/FCKeditor/"
		sWidth			= "100%"
		sHeight			= "200"
		sToolbarSet		= "Default"
		sValue			= ""

		Set oConfig = CreateObject("Scripting.Dictionary")
	End Sub

	Public Property Let BasePath( basePathValue )
		sBasePath = basePathValue
	End Property

	Public Property Let InstanceName( instanceNameValue )
		sInstanceName = instanceNameValue
	End Property

	Public Property Let Width( widthValue )
		sWidth = widthValue
	End Property

	Public Property Let Height( heightValue )
		sHeight = heightValue
	End Property

	Public Property Let ToolbarSet( toolbarSetValue )
		sToolbarSet = toolbarSetValue
	End Property

	Public Property Let Value( newValue )
		If ( IsNull( newValue ) OR IsEmpty( newValue ) ) Then
			sValue = ""
		Else
			sValue = newValue
		End If
	End Property

	Public Property Let Config( configKey, configValue )
		oConfig.Add configKey, configValue
	End Property

	Public Function Create( instanceName )

		sWrite = sWrite & "<div>"

		If IsCompatible() Then

			Dim sFile
			If Request.QueryString( "fcksource" ) = "true" Then
				sFile = "fckeditor.original.html"
			Else
				sFile = "fckeditor.html"
			End If

			Dim sLink
			sLink = sBasePath & "editor/" & sFile & "?InstanceName=" + instanceName

			If (sToolbarSet & "") <> "" Then
				sLink = sLink + "&amp;Toolbar=" & sToolbarSet
			End If

			' Render the linked hidden field.
			sWrite = sWrite & "<input type=""hidden"" id=""" & instanceName & """ name=""" & instanceName & """ value=""" & Server.HTMLEncode( sValue ) & """ style=""display:none"" />"

			' Render the configurations hidden field.
			sWrite = sWrite & "<input type=""hidden"" id=""" & instanceName & "___Config"" value=""" & GetConfigFieldString() & """ style=""display:none"" />"

			' Render the editor IFRAME.
			sWrite = sWrite & "<iframe id=""" & instanceName & "___Frame"" src=""" & sLink & """ width=""" & sWidth & """ height=""" & sHeight & """ frameborder=""no"" scrolling=""no""></iframe>"

		Else

			Dim sWidthCSS, sHeightCSS

			If InStr( sWidth, "%" ) > 0  Then
				sWidthCSS = sWidth
			Else
				sWidthCSS = sWidth & "px"
			End If

			If InStr( sHeight, "%" ) > 0  Then
				sHeightCSS = sHeight
			Else
				sHeightCSS = sHeight & "px"
			End If

			sWrite = sWrite & "<textarea name=""" & instanceName & """ rows=""4"" cols=""40"" style=""width: " & sWidthCSS & "; height: " & sHeightCSS & """>" & Server.HTMLEncode( sValue ) & "</textarea>"

		End If

		sWrite = sWrite & "</div>"

	End Function

	Private Function IsCompatible()

		Dim sAgent
		sAgent = Request.ServerVariables("HTTP_USER_AGENT")

		Dim iVersion

		If InStr(sAgent, "MSIE") > 0 AND InStr(sAgent, "mac") <= 0  AND InStr(sAgent, "Opera") <= 0 Then
			iVersion = CInt( ToNumericFormat( Mid(sAgent, InStr(sAgent, "MSIE") + 5, 3) ) )
			IsCompatible = ( iVersion >= 5.5 )
		ElseIf InStr(sAgent, "Gecko/") > 0 Then
			iVersion = CLng( Mid( sAgent, InStr( sAgent, "Gecko/" ) + 6, 8 ) )
			IsCompatible = ( iVersion >= 20030210 )
		Else
			IsCompatible = False
		End If

	End Function

	' By Agrotic
	' On ASP, when converting string to numbers, the number decimal separator is localized
	' so 5.5 will not work on systems were the separator is "," and vice versa.
	Private Function ToNumericFormat( numberStr )

		If IsNumeric( "5.5" ) Then
			ToNumericFormat = Replace( numberStr, ",", ".")
		Else
			ToNumericFormat = Replace( numberStr, ".", ",")
		End If

	End Function

	Private Function GetConfigFieldString()

		Dim sParams

		Dim bFirst
		bFirst = True

		Dim sKey
		For Each sKey in oConfig

			If bFirst = False Then
				sParams = sParams & "&amp;"
			Else
				bFirst = False
			End If

			sParams = sParams & EncodeConfig( sKey ) & "=" & EncodeConfig( oConfig(sKey) )

		Next

		GetConfigFieldString = sParams

	End Function
	
	Private Function EncodeConfig( valueToEncode )
		EncodeConfig = Replace( valueToEncode, "&", "%26" )
		EncodeConfig = Replace( EncodeConfig , "=", "%3D" )
		EncodeConfig = Replace( EncodeConfig , """", "%22" )
	End Function

	Public Function WrittenText
		WrittenText = sWrite
	End Function
End Class
%>

Vill bara göra några saker klara:
1. Detta gäller inte bara ä, utan å och ö också.
2. Detta händer även om jag INTE aktiverar classen.
3. Jag använder inte, CharSet, Content-Type, CodePage eller något liknande. Inte i ASP, eller HTML.

Medlem sedan mars 2004662 inlägg
#2

Du skulle ju kunna skriva ut det såhär:
ä = ä
Ä = Ä
Ö = Ö
ö = ö
Å = Å
å = å

Lite krångligt kanske. Funkar det då?

Medlem sedan okt. 2004392 inlägg
#3

Jo, det funkar, bara oavsett... men det funkar inte när jag gör så här:

<script>
  alert('<%=Session("message")%>');
</script>

Session("message") Innehåller "År du hemma?"

Då skriver ovanstånde Alert "År du hemma?" och inte "Är du hemma"

EDIT: Jag tror detta föreblir ett mysterium

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Eftersom jag precis börjat använda FCKEditor kommer jag med några förslag:

1. Jag hade problem med åäö också, eftersom den använde utf-8. Server.HTMLEncode löste det. (Använde asp-varianten.)
2. Fungerar deras exempel, dels på webben, dels bifogade?

Avslutar med att jag inte känner igen dina problem, försöker du göra något väldigt konstigt?

Medlem sedan okt. 2004392 inlägg
#5

Nej... det är bara så att... jag inte kan skriva ut åäö ifall jag har inkluderat fckeditor...

Inget mer...

Response.Write "åäö"
<!-- #include virtual="files\fckeditor.asp" -->
Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Okej.

Långsökt, men ändå ett förslag, hämta hem filerna igen, börja om. Filerna bör ju inte kunna bli korrupta...

Alternativt installera bef filer på en annan dator, se om det blir samma fel/när det blir fel.

Medlem sedan aug. 2002351 inlägg
#7

lite sent nu kanske men jag hade samma problem och det löste sig när jag la till följade ovanför inkluderingen av FCK:

Session.CodePage=1252
Medlem sedan mars 20016 260 inlägg
#8

Den tackar vi för lite sådär i efterhand, hjälpte mig :)

Medlem sedan okt. 2004392 inlägg
#9

Tackar Thomasa

Funkar perfekt!

Thomasa skrev:

lite sent nu kanske men jag hade samma problem och det löste sig när jag la till följade ovanför inkluderingen av FCK:

Session.CodePage=1252

Sent bättre än aldrig ;)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)