Thank you for confirming Khalid. I actually never considered it may be a core issue.

With respect to 'something in includes/unicode.php' affecting it, the only real settings that are changed are:

// Set appropriate configuration
  mb_internal_encoding('utf-8');
  mb_language('uni');

As far as I can tell, none of the remainder of the code would affect the operation of iconv() or mb_convert_encoding(), which also exhibits the same behaviour as iconv() is showing once drupal is bootstrapped.

I would really appreciate any help anyone can offer in narrowing this issue down, as this is a critical feature for our client.

Brian



Khalid Baheyeldin wrote:


On Mon, Nov 16, 2009 at 10:42 AM, Brian Vuyk <[email protected]> wrote:
Hi all.

I am having a bit of a unique problem here, and I am hoping someone can help me out.

In short, we are outputting strings from a custom module we wrote to an external service that only accepts the ASCII character set. So, I am trying to run all the strings through iconv() to convert them.

Here's the weird part. Take the script below:

$string = "Stéphanie,D Hérouville";
$output = iconv("UTF-8", 'ASCII//TRANSLIT', $string);
print $output;

If I run this from the command line, I get the proper output - 'Stephanie D Herouville'. However, if I run it in my Drupal installation, whether as part of a module or from the Devel 'Execute PHP' box, I get different output: 'St?phanie D H?rouville'. That is, instead of replacing the character with it's expected ASCII counterpart, it replaces it with a ?.

Has anyone encountered this, or have any idea why this is happening?

Brian


I confirm what you are seeing:

If you have a file called ascii.php with this in it:

<?php
$string = "Stéphanie,D Hérouville";
$output = iconv("UTF-8", 'ASCII//TRANSLIT', $string);
print $output . "\n";
?>

And run it as:

$ php ascii.php

The output is without the accented characters.

However, if you boot Drupal first, like so:

<?php
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$string = "Stéphanie,D Hérouville";
$output = iconv("UTF-8", 'ASCII//TRANSLIT', $string);
print $output . "\n";
?>

The output is with question marks, as you said.

I suspect something in includes/unicode.inc is causing this.
--
Khalid M. Baheyeldin
2bits.com, Inc.
http://2bits.com
Drupal optimization, development, customization and consulting.
Simplicity is prerequisite for reliability. --  Edsger W.Dijkstra
Simplicity is the ultimate sophistication. --   Leonardo da Vinci

Reply via email to