一切都在这个问题中:我有一个Php脚本,它是一个UTF-8文件。在这个脚本中,我想这样做:
<?
echo "âêïû\n";
?>
如果我在Windows提示符下运行它,我会得到如下结果:
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php
âêïû
C:\php>
我找不到正确的转换方案。我也尝试过这段代码:
$tab = mb_list_encodings();
foreach ($tab as $enc1) {
foreach ($tab as $enc2) {
$t=mb_convert_encoding("âêïû\n", $enc1, $enc2);
if (strlen($t)<14) {
echo $enc1." ".$enc2." = ".$t."\n";
}
}
}
我没有找到正确的转换!
任何帮助都将不胜感激
发布于 2009-10-30 23:23:30
你让我走上了正确的道路,但有一个问题(我喜欢Windows \o/):
C:\php>chcp 65001
Page de codes active : 65001
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php | more
Mémoire insuffisante.
Mémoire insuffisante =内存不足。
如果我尝试
C:\php>chcp 1252
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php
C:\php>ééîîïïÂÂÂÂâûü
它起作用了。只有上帝知道为什么。但它是有效的。谢谢你让我走上了正确的道路!
顺便说一句,从UTF8转到命令提示符的php代码如下:
echo mb_convert_encoding($utf8_string, "pass", "auto");
发布于 2009-10-30 23:14:12
问题是Windows cmd线路默认情况下不支持UTF8。在此link中,如果您遵循以下内容
运行"chcp 65001“
您应该能够输出utf8。
发布于 2018-11-21 01:54:01
试试另一个。它使用俄语编码,我希望它可以使用法语:
class ConsoleHelper
{
/**
* @var boolean
*/
private static $isEncodingSet = false;
/**
* @param string $message
* @return string
*/
public static function encodeMessage($message)
{
$isWindows = (DIRECTORY_SEPARATOR == '\\');
if ($isWindows) {
if ( ! self::$isEncodingSet) {
shell_exec('chcp 866');
self::$isEncodingSet = true;
}
$message = iconv('utf-8', 'cp866', $message);
}
return $message;
}
}
https://stackoverflow.com/questions/1650369
复制相似问题