php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #60429 utf8_encode and utf8_decode functions should be deprecated
Submitted: 2011-12-02 01:37 UTC Modified: 2013-07-30 02:58 UTC
Votes:4
Avg. Score:3.8 ± 1.6
Reproduced:3 of 4 (75.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: deceze at gmail dot com Assigned: yohgaki
Status: Assigned Package: *XML functions
PHP Version: Irrelevant OS:
Private report: No CVE-ID:
Have you experienced this issue?
Rate the importance of this bug to you:

 [2011-12-02 01:37 UTC] deceze at gmail dot com
Description:
------------
The purpose of the functions utf8_encode and utf8_decode are time and again 
misunderstood and have probably caused more encoding related problems than they 
have solved. The biggest reason for this is their naming. Their purpose is to 
*convert* the encoding of a string from ISO-8859-1 to UTF-8, yet they are named 
in a way that suggests some other magical function that is necessary to work 
with UTF-8 text. Users looking for "UTF-8 support" in their app quickly find 
these functions due to their naming and use them without understanding what they 
do, often only testing with ASCII text which appears to work fine of first 
sight.

Why is ISO-8859-1 presumed to be the default encoding when converting to UTF-8, 
hence why do these functions occupy such a prominent spot in the namespace? 
There's simply no good reason for it.

The same functionality is available through iconv and mb_convert_encoding. 
Therefore I suggest to slowly deprecate utf8_encode and utf8_decode to clear up 
a recurring confusion and consolidate features into the existing, much more 
versatile iconv and mb_ functions.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2013-07-30 02:58 UTC] yohgaki@php.net
-Assigned To: +Assigned To: yohgaki
 
PHP Copyright © 2001-2015 The PHP Group
All rights reserved.
Last updated: Wed Sep 02 19:01:27 2015 UTC