Tom Smykowski
Tom Smykowski

Reputation: 26089

How to set UTF-8 encoding for a PHP file

I have a PHP script called :

http://cyber-flick.com/apiMorpho.php?method=getMorphoData&word=kot

That displays some data in plain text:

Cz��� mowy: rzeczownik
Przypadek: dope�niacz
Rodzaj: şe�ski
Liczba: mnoga

As you can see in place of proper chars there are so "bushes". What i would like to do is display this in a way so that people see in browser proper UTF-8 characters.

You can encapsulate it in HMTL tags and set in meta UTF-8 encoding, but because the data received from this script will be processed further I don't want to use any HTML tags, it should be only plain text result set.

So is there a way to inform browser that this file is UTF-8 without using meta tags?

PS. File is encoded in UTF-8 and if I manually change charset encoding in my browser to UTF-8 it displays ok, but what I want to acomplish is people to not be required to do so.

Upvotes: 55

Views: 242937

Answers (7)

jimmy5
jimmy5

Reputation: 57

Html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="x" content="xx" />

vs Php:

<?php header('Content-type: text/html; charset=ISO-8859-1'); ?>
<!DOCTYPE HTML>
<html>
<head>
<meta name="x" content="xx" />

Upvotes: 1

Patrick-Peng
Patrick-Peng

Reputation: 31

HTML file:

<head>

<meta charset="utf-8">

</head>

PHP file :

<?php header('Content-type: text/plain; charset=utf-8'); ?>

Upvotes: 2

Larry Judd
Larry Judd

Reputation: 351

Also note that setting a header to "text/plain" will result in all html and php (in part) printing the characters on the screen as TEXT, not as HTML. So be aware of possible HTML not parsing when using text type plain.

Using:

header('Content-type: text/html; charset=utf-8');

Can return HTML and PHP as well. Not just text.

Upvotes: 16

delphist
delphist

Reputation: 4539

header('Content-type: text/plain; charset=utf-8');

Upvotes: 118

zerkms
zerkms

Reputation: 254886

You have to specify what encoding the data is. Either in meta or in headers

header('Content-Type: text/plain; charset=utf-8');

Upvotes: 5

Jan Dragsbaek
Jan Dragsbaek

Reputation: 8101

PHP, by default, always returns the following header: "Content-Type: text/html" (notice no charset), therefore you must use

<?php header('Content-type: text/plain; charset=utf-8'); ?>

Upvotes: 10

Intrepidd
Intrepidd

Reputation: 20858

Try this way header('Content-Type: text/plain; charset=utf-8');

Upvotes: 4

Related Questions