Reasons and solutions for garbled characters written into txt files by PHP [Summary Sharing]

PHPz
Release: 2023-04-11 12:04:02
Original
2122 people have browsed it

In PHP, writing text files is a common task. However, when writing text files, you may encounter garbled characters. This article will introduce you how to solve the problem of garbled characters when writing text files in PHP.

Problem Description

When using PHP to write a text file, if the file content contains non-ASCII characters (such as Chinese characters), you may encounter garbled characters. The specific manifestation is that the content displayed in the text file does not match the expected, or garbled characters appear when reading the text file. This problem is very common and needs to be taken seriously.

The following is a simple example:

$file = 'test.txt';
$content = '写入一个中文字符';
$file_handle = fopen($file, 'w');
fwrite($file_handle, $content);
fclose($file_handle);
Copy after login

In this example, we write the string "write a Chinese character" into the text file "test.txt". This code works fine in most cases. However, if you encounter garbled characters when opening the text file "test.txt", then you need to solve the problem.

Cause of the problem

When writing text files with PHP, if you use the default encoding format (such as ANSI encoding), then when writing non-ASCII characters, It is easy to cause garbled code problems. This is because ANSI encoding only supports English characters and a small number of special characters, and cannot correctly encode other characters (such as Chinese characters). Therefore, other encoding formats need to be used.

Solution

To solve the garbled problem of PHP writing text files, there are two solutions:

Method 1: Use UTF-8 encoding

UTF-8 is a universal encoding format that can be used to encode characters in various languages. When writing text files, using UTF-8 encoding can effectively avoid garbled characters.

The following is an example:

$file = 'test.txt';
$content = '写入一个中文字符';
$file_handle = fopen($file, 'w');
fwrite($file_handle, utf8_encode($content));
fclose($file_handle);
Copy after login

In this example, we use the utf8_encode function to convert the $content string from the default encoding to UTF-8 encoding. In this way, we can safely write strings to text files without worrying about encountering garbled characters.

Method 2: Use the specified encoding format

If you need to use the specified encoding format to encode the text file, you can specify the encoding format when opening the file. We can do this using PHP’s iconv() function.

The following is an example:

$file = 'test.txt';
$content = '写入一个中文字符';
$encoding = 'GBK';
$file_handle = fopen($file, 'w');
fwrite($file_handle, iconv('UTF-8', $encoding, $content));
fclose($file_handle);
Copy after login

In this example, we convert the $content string from UTF-8 encoding to $encoding encoding (GBK encoding is used here), and then Write to text file.

Summary

When using PHP to write text files, garbled characters are a common problem. To solve this problem, we can use UTF-8 encoding or specify an encoding format to encode the file content. No matter which method you choose, you can effectively avoid garbled characters when PHP writes text files.

The above is the detailed content of Reasons and solutions for garbled characters written into txt files by PHP [Summary Sharing]. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template