charset="utf-8" not displaying special characters - php

I'm using PHP to display people's information from a text file in an HTML table. Some of the text contains special characters (Köhler, François, František) and those characters are displayed as "�". I know this is because the encoding isn't set to charset="UTF-8", but I've set it using PHP's header() function as well as in the meta data in the <head>. In addition, I used Notepad to specifically save the file encoding as UTF-8.
When I inspect the page with
CTRL+Shift+i > Network > Headers
it includes "Content-Type:text/html; charset=UTF-8" under "Response Headers", so I think the browser should be getting the idea that the encoding is UTF-8.
What am I missing here?
Here's the code where I declare the charset in the PHP file
<?php
header('Content-Type:text/html; charset=UTF-8');
$ary_of_lines = file("customers.txt");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
....... more stuff .......

Related

Why isn't my utf8 working in my php page? [duplicate]

This question already has answers here:
UTF-8 all the way through
(13 answers)
Closed 3 years ago.
I searched for a lot of answers here but i still have a problem with the UTF8. "Special" letters doesn't appear in my browser.
I'm using:
php Designer 8
Wampserver 3.1.4_x86
MySQL 5.6
Navicat100_premium
I'm using Google
[
those "?" are all "çççççççç"
This is the beginning of the code:
<html>
<title> APPACDM </title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
header('Content-type: text/html; charset=utf-8');
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
Everything looks in the wrong order to me. If this is a HTML page with embedded PHP try this:
<?php
header('Content-type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html>
<head>
<title> APPACDM </title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
Note: always set your PHP Header response before any HTML output. Always wrap PHP in PHP tags, not plain text as in your example.
See here: PHP Header command
Thanks,
Shaun.
If this data is queried from a database then you can do the following:
[PDO version]
$bdd->exec("set names utf8");
[MYSQLI version]
mysqli_set_charset($bdd, "utf8");

German characters wrong in included php but OK on index.php

In my index.php I replaced
<div class="site_content"> ... </div>
with
<?php include ("site_content.php"); ?>
whilst all contents of the upper were copy&pasted into site_content.php.
The content now shows strange characters and the german encoding and charset (UTF-8) are not recognized any more. Before the change the encoding worked fine. The header of the index.php looks like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>...some title.... </title>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
<meta name="description" content=" ...some desc ...."/>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php include ("parts_index/site_content.php"); ?>
</body>
</html>
How can I solve this?
I've solved it.
The answer is very simple. The included php file was ANSI while my index.php was of course utf-8. When I converted the included file (site_content.php) to utf-8 no BOM it solved my problem! Thank you anyway for your time!
OZ

how to fix The character encoding of the HTML document was not declared

My website runs in localhost without any errors; but when I added my site to CPpanel and run members.php page disapeared (it shows white background). Inspecting the page in console displays this error message :
The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must be declared in the document or in the transfer protocol.
Inspecting the element shows only these lines:
<div style="clear:both;"></div>
</div>
</div>
</body>
</html>
From the error you get, please add this to your <head> ... </head>:
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-5">
If the charset above did not work, please try this instead:
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
And I hope you defined the before BODY part of your pages as this:
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<title> Your Title</title>
</HEAD>
<BODY>
....
EDIT 2:
Before including other any other PHP files in your members.php, type this line first:
header('Content-type: text/html; charset=utf-8');
Have you something like this in header? You put instead of utf-8 encoding of your file.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Encoding arabic using UTF8

Currently I created simple website using include system
header.php - contains first part of HTML page (Head, meta tags, JS codes ... etc )
page.php - contains simple php code
page content
My main problem with arabic language
I have to put
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
in page.php, footer.php between <head> tags otherwise the arabic will not support correctly.
This prevents page validation because of these tags.
Is there any method to avoid this problem ?
Thanks
// Send a raw HTTP header
header ('Content-Type: text/html; charset=UTF-8');
// Declare encoding META tag, it causes browser to load the UTF-8 charset
// before displaying the page.
echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
// Right to Left issue
echo '<body dir="rtl">';
Encode the arabic string into UTF-8 using a tool like this. (No need to change any settings - that link has the the correct settings you need).
Then use utf8_decode() to decode the string back.
Example:
<?php echo utf8_decode('your_encoded_string_goes_here'); ?>
Apart from all of the answers... Make sure your (HTML/PHP) files are saved with the right encoding utf-8
All you need is to put this
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
in a file that you include/include_once in your pages
EDIT. example:
header.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>my title in العربية</title>
</head>
<body>
mypage.php
<?php
include_once 'header.html';
?>
<p>
العربية
</p>
<?php
include 'foot.html';
?>
foot.html
<div>my footer</div>
</body>
</html>
1- Put this
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
2- You should also save the documents in UTF-8 not ANSI
Your headers should appear as the following:
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8">
</head>
<body>
Save your document as utf-8

PHP: Displaying Korean Text in a Webpage

How to display Korean Text in a webpage. i have been using these meta tags and headers
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="ko"/>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
ini_set('default_charset', 'UTF-8');
header('Content-Type: text/html;charset=utf-8');
But nothing works.. please help!!
NOTE: I tried every tag 1 at a time not all at once.
Use:
ini_set('default_charset', 'UTF-8');
header('Content-Type: text/html;charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
and make sure your editor is configured to save using UTF-8, and make sure that any other systems involved (e.g. databases) are configured to use utf-8.
Your example has two META tags - one is UTF-8 and the other is ISO-8859-1.

Categories