PHP7.0:调用未定义的函数utf8_encode()

时间:2017-05-11 21:29:30

标签: php ubuntu-16.04 php-7

我正在使用PHP 7.0进行开发,我尝试使用函数utf8_encode(),我收到错误“调用未定义的函数utf8_encode()”

我必须尝试使用​​sudo apt-get install php7.0-xml安装php7.0-xml模块,我收到此错误:

<style>

如果我Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: php7.0-xml : Depends: php7.0-common (= 7.0.18-0ubuntu0.17.04.1) but 7.0.18-1+deb.sury.org~yakkety+1 is to be installed E: Unable to correct problems, you have held broken packages. 我得到了这个结果:

sudo apt-cache search php7.0-*

我正在使用ubuntu,我的版本是:

enter image description here

如何使用utf8_encode或utf8_decode函数?

更新1:

我试过安装php7.0-common,我得到了这个结果:

libapache2-mod-php7.0 - lado servidor, lenguaje de guionización HTML-embebido (módulo Apache 2)
php7.0 - Lenguaje de guión empotrado para HTML en el lado del servidor (metapaquete)
php7.0-cgi - Lenguaje de guiones embebidos en HTML para servidores (binario CGI)
php-all-dev - package depending on all supported PHP development packages
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-common - documentation, examples and common module for PHP
php7.0-curl - CURL module for PHP
php7.0-dev - Files for PHP7.0 module development
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-json - JSON module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-opcache - Zend OpCache module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-pspell - pspell module for PHP
php7.0-readline - readline module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
php-geoip - GeoIP module for PHP
php-xdebug - Xdebug Module for PHP
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php-amqp - AMQP extension for PHP
php-apcu - APC User Cache for PHP
php-gearman - PHP wrapper to libgearman
php-gmagick - Provides a wrapper to the GraphicsMagick library
php-gnupg - PHP wrapper around the gpgme library
php-http - PECL HTTP module for PHP Extended HTTP Support
php-igbinary - igbinary PHP serializer
php-imagick - Provides a wrapper to the ImageMagick library
php-libsodium - PHP wrapper for the Sodium cryptographic library
php-mailparse - Email message manipulation for PHP
php-memcache - memcache extension module for PHP
php-memcached - memcached extension module for PHP, uses libmemcached
php-mongodb - MongoDB driver for PHP
php-msgpack - PHP extension for interfacing with MessagePack
php-oauth - OAuth 1.0 consumer and provider extension
php-pinba - Pinba module for PHP
php-propro - propro module for PHP
php-ps - ps module for PHP
php-radius - radius client library for PHP
php-raphf - raphf module for PHP
php-redis - PHP extension for interfacing with Redis
php-remctl - PECL module for Kerberos-authenticated command execution
php-rrd - PHP bindings to rrd tool system
php-smbclient - PHP wrapper for libsmbclient
php-solr - PHP extension for communicating with Apache Solr server
php-ssh2 - Bindings for the libssh2 library
php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP
php-tideways - Tideways PHP Profiler Extension
php-uploadprogress - file upload progress tracking extension for PHP
php-uuid - PHP UUID extension
php-yac - YAC (Yet Another Cache) for PHP
php-yaml - YAML-1.1 parser and emitter for PHP
php-zmq - ZeroMQ messaging bindings for PHP
php7.0-bcmath - Bcmath module for PHP
php7.0-bz2 - bzip2 module for PHP
php7.0-dba - DBA module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-soap - SOAP module for PHP
php7.0-sybase - Sybase module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0-zip - Zip module for PHP

如何安装php7.0-xml模块?

更新2:

我必须尝试安装 sudo apt-get install php7.0-mbstring ,但我还安装了这个模块。

我必须尝试安装其他模块 sudo apt-get install php7.0-xmlrpc ,我得到了相同的结果:

php7.0-common is already in its most recent version 
(7.0.18-1+deb.sury.org~yakkety+1).

这对我不起作用。

更新3: 原始设置:使用Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: php7.0-xml : Depends: php7.0-common (= 7.0.18-0ubuntu0.17.04.1) but 7.0.18-1+deb.sury.org~yakkety+1 is to be installed E: Unable to correct problems, you have held broken packages. default character set latin在UTF-8和MySQL数据库中编写的Web。

在网络上有一个时刻,我们要求服务器的地址,并在地址中我们有特殊字符:

enter image description here

我们将返回id = 2的行。在字段“direccion”中我们有这个字符“ü”。服务器对请求的响应没有编码地址,我得到了:

请求没问题。

enter image description here

但回应:

enter image description here

什么都没有,没有回应!

现在,我们将编写像@duskwuff推荐的地址:

collate latin1_spanish_ci;

请求是一样的,但我们现在得到了回复!!!

enter image description here

如果我们在网页上打印地址,我们就有了:

enter image description here

更新4:

下一个测试...我们将进行与更新3相同的测试,但更改MySQL数据库默认字符和整理。我们将数据库更改为默认字符UTF8和collat​​ion utf8_spanish_ci。我们的网页仍然使用UTF8进行编码,服务器的响应没有编码地址。

如果我选择数据库,我们可以正确查看所有数据。

enter image description here

确定。我将提出请求和回复,但没有编码任何东西。不要忘记,数据库中的数据以UTF8保存。

请求没问题,但是请求:

enter image description here

没有回应,比如更新3。

但是,如果我们根据@duskwuff的建议编纂回复:

$utf8_text = iconv("ISO-8859-1", "UTF-8", $row["address"])

enter image description here

我们得到了答复;我们可以看到打印在我们页面上的数据:

enter image description here

因此,我不知道为什么,但我必须将数据编成UTF8以获得回复。

我用:

创建架构和表
$utf8_text = iconv("ISO-8859-1", "UTF-8", $row["direccion"]);

我们编纂的领域是:

CREATE SCHEMA IF NOT EXISTS `31juegos` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;

CREATE TABLE IF NOT EXISTS `31juegos`.`tbl006_direccion` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `jugador_id` INT UNSIGNED NOT NULL,
  `provincia_id` INT UNSIGNED NOT NULL,
  `direccion` VARCHAR(100) NOT NULL,
  `ciudad` VARCHAR(50) NOT NULL,
  `codigo_postal` VARCHAR(5) NOT NULL,
  `pais` VARCHAR(50) NOT NULL,
  `telefono` VARCHAR(12) NULL,
  `fecha` DATETIME NOT NULL DEFAULT now(),
  PRIMARY KEY (`id`),
  INDEX `fk_tbl006_direccion_tbl005_jugador1_idx` (`jugador_id` ASC),
  INDEX `fk_tbl006_direccion_tbl020_provincia1_idx` (`provincia_id` ASC),
  CONSTRAINT `fk_tbl006_direccion_tbl005_jugador1`
    FOREIGN KEY (`jugador_id`)
    REFERENCES `31juegos`.`tbl005_jugador` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tbl006_direccion_tbl020_provincia1`
    FOREIGN KEY (`provincia_id`)
    REFERENCES `31juegos`.`tbl020_provincia` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

1 个答案:

答案 0 :(得分:4)

请勿使用utf8_encode()utf8_decode()功能。它们具有误导性的名称 - 它们实际上执行ISO-8859-1和UTF-8之间的转换。在大多数情况下,它们不是必需的;您的数据库和应用程序应始终使用UTF-8文本,并且绝不应该处理ISO-8859-1文本。

如果您确实需要将文本从ISO-8859-1转换为UTF-8 - 这是utf8_encode()的作用 - 请使用iconv()函数:

$utf8_text = iconv("ISO-8859-1", "UTF-8", $iso_8859_1_text);

完全避免utf8_decode()功能。它将UTF-8文本转换为ISO-8859-1,并将用问号替换ISO-8859-1中不可用的任何字符。这将破坏用许多欧洲语言编写的文本,并使非拉丁文本(如俄语或中文)完全不可读。