---
title: "Tomcat läser GET parametrar med fel charset"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/164605-tomcat-läser-get-parametrar-med-fel-charset"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "dAEk"
published: "2007-09-17T20:41:32.000Z"
updated: "2007-09-19T20:15:10.000Z"
replies: 5
views: 643
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/164605-tomcat-läser-get-parametrar-med-fel-charset"
---

# Tomcat läser GET parametrar med fel charset

## #1 — dAEk, 2007-09-17T20:41Z

Muppigt var det här. Tomcat bråkar med mig och vill inte läsa GET parametrar med rätt charset (UTF-8) utan envisas med att använda 8859-1. Kan man ställa in Tomcat på nåt sätt så att den gör rätt, eller hur hanterar man bäst att servrar gör olika?

Permalänk: https://www.webforum.nu/p/164605

## #2 — Lime, 2007-09-18T07:41Z

Dels kan du ställa vilket default charset du använder i både TC och JVM:en och sedan går det också att deklarera detta i de anrop som görs genom att sätta sidans charset.

Antingen gör du det i header-taggen med "contenttype=text/html charset=UTF-8" eller med JSP-tagen page (se http://java.sun.com/products/jsp/tags/11/syntaxref11.fm7.html).

Permalänk: https://www.webforum.nu/p/2029264

## #3 — dAEk, 2007-09-18T15:17Z

Jo, jag vet att man ska sätta charset i http headern. Det är inte det som är felet, men tack ändå. ;)

Kolla på följande exempel, testkör gärna och skriv i lite grejs i textfältet och skicka iväg formuläret. Skriv text som innehåller tecken utöver a-z0-9, till exempel "ölglas är aldrig passé" eller "ölglas für alles!" så kommer du se vad jag menar. Nånting är knas, eller?

```
<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URLDecoder"%>
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

String messageParam = request.getParameter("message");
String queryString  = request.getQueryString();

if (messageParam == null) messageParam = "";

%>
<!doctype html>
<html>
<head>
	<title>GET</title>
</head>

<body>
	<div>
		<ul>
			<li>QueryString: <%= queryString %></li>
			<li>messageParam: <%= messageParam %></li>
			<li>URLEncoder.encode(messageParam, "UTF-8"): <%= URLEncoder.encode(messageParam, "UTF-8") %></li>
			<li>URLDecoder.decode(messageParam, "UTF-8"): <%= URLDecoder.decode(messageParam, "UTF-8") %></li>
		</ul>
		
		<form action="" method="get">
			<input type="text" name="message" value="<%= messageParam %>">
			<input type="submit">
		</form>
	</div>
</body>
</html>
```

Använder jag nåt i stil med 

```
String messageParam = request.getParameter("message"); 
String message = new String(messageParam.getBytes("8859_1"), "UTF-8");
```

visas texten okej men vad händer om man deployar appen på en server som inte behöver denna fix? Eller kör alla servrar med 8859-1 (som jag antar att TC verkar använda sig av) med bakåtkompatibilitet i åtanke?

Me be confused.

Permalänk: https://www.webforum.nu/p/2029438

## #4 — spango, 2007-09-19T07:19Z

Av någon keff anledning finns det inget standardmässigt sätt att säga åt en servletmotor hur den ska avkoda indata, och defaulten kommer förstås från den gamla onda tiden, när Latin-1 användes till allt. Så ja, standard är ISO-8859-1, men det betyder inte att det är rätt. Vill man använda UTF-8 i Tomcat fixar man det via server.xml, se t.ex. http://confluence.atlassian.com/display/DOC/Configuring+Tomcat's+URI+encoding

PS. Den enda korrekta teckenuppsättningsteststrängen är "François och Niños räksmörgåscafé" ;)

Permalänk: https://www.webforum.nu/p/2029661

## #5 — Lime, 2007-09-19T07:25Z

Ja, man önskar ju att det gick att göra som det går att göra i Weblogic och använda input-charset taggen.

Ex:

\<input-charset\>
\<resource-path\>/foo\</resource-path\>
\<java-charset-name\>UTF-8\</java-charset-name\>
\</input-charset\>

Permalänk: https://www.webforum.nu/p/2029665

## #6 — dAEk, 2007-09-19T20:15Z

Jaha, där ser man. Det var som jag misstänkte. Jobbigt att ana problem men inte veta hur man ska ta sig förbi dem. ;)

Har testat med URIEncoding="UTF-8" i server.xml och nu rullar det som det ska. Sjyst att det fanns en enkel fix.

Tack så mycket för hjälpen!

Permalänk: https://www.webforum.nu/p/2029896

---

Tråden på webben: https://www.webforum.nu/amne/java/164605-tomcat-läser-get-parametrar-med-fel-charset
