News Feed
Jobs Feed
Sections




News Archive
feed this:

Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

SitePoint PHP Blog:
Bringing Unicode to PHP with Portable UTF-8
September 10, 2013 @ 11:19:05

On the SitePoint PHP blog there's a new tutorial showing you how to bring portable UT-8 support to PHP with the Portable-UTF8 library. UTF-8 handling has long been one thing desired in the core of PHP, but hasn't been introduced quite yet.

PHP's lack of Unicode/multibyte support means that the standard string handling functions treat strings as a sequence of single-byte characters. In fact, the official manual defines a string in PHP as a "series of characters, where a character is the same as a byte." PHP supports only 8-bit characters, while Unicode (and many other character sets) may require more than one byte to represent a character. This limitation of PHP affects almost all aspects of string manipulation, including (but not limited to) substring extraction, determining string lengths, string splitting, shuffling etc.

The article mentions some of the efforts in the past that have been made to try to introduce this functionality into the core, but was shelved at the time. Instead of waiting on this feature to be introduced, they show you how to use the library to do things like check for UTF-8 strings, "cleaning" the UTF-8 strings and do some validation on the string's contents.

0 comments voice your opinion now!
unicode portable utf8 library tutorial

Link: http://www.sitepoint.com/bringing-unicode-to-php-with-portable-utf8/

Reddit.com:
Let's talk Character Encoding
March 15, 2012 @ 11:07:07

On Reddit.com there's a recent post with a growing discussion about character encodings in PHP applications (with some various recommendations).

I would rather not have to convert these weird characters to the HTML character entities, if possible. I'd rather be able to use these characters directly on the web page. If this is for some reason a bad idea, let me know. This might be more of a general web design question (i already posted it there), but I figured it is still appropriate to post here as well since PHP is used to pull an entry from the database, and I figured a lot of you here would know the answer to the question.

The general consensus is to use UTF8 in this case, but there's a few reminders for the poster too:

  • Don't forget to make the database UTF8 too
  • Be sure you're sending the right Content-Type for the UTF8 data
  • an link to an article about what "developers must know about unicode/charactersets"
0 comments voice your opinion now!
character encoding advice reddit utf8 contenttype unicode


Nikita Popov's Blog:
htmlspecialchars() improvements in PHP 5.4
January 30, 2012 @ 09:55:24

In this new post to his blog Nikita Popov looks at an update that might have gotten lost in the shuffle of new features coming in PHP 5.4 - some updates to htmlspecialchars.

One set of changes that I think is particularly important was largely overlooked: For PHP 5.4 cataphract (Artefacto on StackOverflow) heroically rewrote large parts of htmlspecialchars thus fixing various quirks and adding some really nice new features. Here a quick summary of the most important changes: UTF-8 as the default charset, improved error handling (ENT_SUBSTITUTE) and Doctype handling (ENT_HTML401,...).

He goes into each of these three main features in a bit more detail, providing code to illustrate the improved error handling and the new flags for Doctype handling (covering HTML 4.01, HTML 5, XML 1 and XHTML).

0 comments voice your opinion now!
htmlspecialchars improvement release doctype error utf8


Project:
Patchwork-UTF8 - UTF8 Support for PHP
January 27, 2012 @ 11:38:40

Nicolas Grekas has shared another tool that he's pulled out of his "Patchwork" framework to make it a stand-alone tool: the Patchwork-UTF8 helper that provides matching functions to those PHP already has for regular strings, but a little smarter to work with UTF8 correctly.

The PatchworkUtf8 class implements the quasi complete set of string functions that need UTF-8 grapheme clusters awareness. These functions are all static methods of the PatchworkUtf8 class. The best way to use them is to add a use PatchworkUtf8 as u; at the beginning of your files, then when UTF-8 awareness is required, prefix by u:: when calling them.

In the README for the tool he talks about the functions included in the current release that match PHP's string functions as well as some additional methods like "isUtf8", "bestFit" and "strtocasefold". It relies on the mbstring, iconv and intl extensions being installed, and if they aren't, it falls back to other functionality (list of those methods included).

0 comments voice your opinion now!
utf8 support string patchwork framework helper mbstring iconv intl


Ahmed Shreef's Blog:
iconv misunderstands UTF-16 strings with no BOM
August 27, 2010 @ 13:36:56

Ahmed Shreef has a recent post to his blog about an issue he had converting UTF-16 strings over to UTF-8 with the iconv functionality in PHP. Specifically, he ended up with "rubbish unreadable characters" after the conversion.

I had a problem last week with converting UTF-16 encoded strings to UTF-8 using PHP's iconv library on a Linux server. my code worked fine on my machine but the same code resulted in a rubbish unreadable characters on our production server.

In his example (a basic "Hello World" in Arabic) he notes that there's no byte order mark on the string and, because of this, the iconv feature tries to guess if it's big-endian or little-endian. This guessing varies from machine to machine resulting in the inconsistencies he saw. The solution is to define the "to" and "from" for the conversion manually rather than letting it just guess.

0 comments voice your opinion now!
byteordermark bom iconv utf16 utf8 convert


Danne Lundqvist's Blog:
Detecting UTF BOM - byte order mark
April 29, 2010 @ 11:47:03

In a new post to his blog Danne Lundqvist looks at a common pitfall that could trip you up if you're not careful with your UTF-8 data - not looking for the UTF byte order mark that tells the application if it needs to be handled as UTF content.

One such thing is the occurrence of the UTF byte order mark, or BOM. [...] For UTF-8, especially on Windows, it has become more and more common to use it to indicate that the file is indeed UTF. Most text editors handle this well and you won't ever see these bytes. As it should be.

He points out what could cause an issue - using strcmp or substr but it can be prevented by looking at and removing those first three bytes if needed. He includes a snippet of code that does just that.

0 comments voice your opinion now!
byteordermark utf utf8 utf16 detect


Evert Pot's Blog:
basename() is locale-aware
March 30, 2010 @ 12:04:35

Evert Pot found out an interesting thing about the basename function in PHP - it's more than just a handy shortcut for paths, it's also locale aware.

It turns out basename does a bit more than just splicing the string at the last slash, because it's locale aware. In my case I was dealing with a multi-byte UTF-8 string. It took me quite some time figuring out what was going on, because I was testing from the console which had the en_US.UTF-8 locale, and the bug was appearing on Apache, which defaults to the C locale.

He includes an example snippet of code showing how it can work with both the default (well, for Apache anyway) of the "C" locale versus the "UTF-8" locale and return different results for the same urldecoded information.

2 comments voice your opinion now!
basename locale utf8 urldecode


Elliot Haughin's Blog:
Building UTF8 Compatible CodeIgniter Applications
March 25, 2010 @ 12:13:43

Elliot Haughin has written up a post for all of those developers out there either already using CodeIgniter or wanting to use it for your application - a look at making a UTF-8 compatible site with the help of a few custom libraries and form helpers.

UTF8 allows your site to represent characters other than those in the basic english alphabet. More often than not, your CodeIgniter Application will contain methods where users can enter their name. [...] This guide assumes you are reasonably competent in installing php extensions, adding config variables to your php.ini, and using MY_ CodeIgniter overloading. If you're not sure about any of these, please make sure you consult a professional.

You'll need to install the mbstring extension for PHP to be able to follow along with his example. He shows how to override the basic form functionality with custom functions to change the display of the form and how it handles the submitted information. He also looks at how to update the XML-RPC library that comes with the framework and the creation of a new helper to allow you to convert, check, compare and sort UTF-8 data.

0 comments voice your opinion now!
utf8 codeigniter tutorial library helper


Phil Sturgeon's Blog:
UTF-8 support for CodeIgniter
August 19, 2009 @ 09:34:30

Phil Sturgeon has posted a quick guide on working with UTF-8 support in the CodeIgniter framework.

Writing an application is easy. Writing an application that supports all characters from multiple languages? Not so easy. [...] To make your CodeIgniter application play nicely with UTF-8 you have a few things to think about.

He shows how to set the headers up correctly, change the framework's configuration to include UTF-8 as a character set and set up the database connection to use it too. If you're already using a non-UTF-8 database structure, he also includes an example of how to make the conversion.

0 comments voice your opinion now!
codeigniter framework utf8 support mysql


Pablo Viquez's Blog:
JSON, ISO 8859-1 and UTF-8 - Part
July 20, 2009 @ 12:42:36

After spotting some null values in a few of his form fields following an Ajax request, Pablo Viquez decided to track down his issue:

While I was looking at some AJAX calls, I started to have a problem, for some reason, when I tried to query a JSON service I did using JQuery, the result was null for some fields. Going a little deeper, I notice that the records from the DB were OK, and the JavaScript was OK to, so what was the problem? The JSON Encode!

His issue stemmed from the character encoding of the string being passed into json_encode (in this case, UTF-8) was coming from a PHP script saved in a page encoded as ISO-8859-1. You can download the files he's come up with to illustrate the point.

0 comments voice your opinion now!
json encode utf8 iso88591 jsonencode



Community Events











Don't see your event here?
Let us know!


install unittest composer introduction code security component hhvm example overview opinion facebook symfony2 package release language framework application hack podcast

All content copyright, 2014 PHPDeveloper.org :: info@phpdeveloper.org - Powered by the Solar PHP Framework