2017-05-11 40 views
0

我用PHP 7.0开发,我曾尝试使用的功能函数utf8_encode()和我已经得到了错误“调用未定义功能函数utf8_encode()”PHP7.0:调用未定义功能函数utf8_encode()

我不得不尝试安装php7.0-XML模块使用sudo apt-get的安装php7.0,XML和我得到这个错误:如果我让sudo apt-cache search php7.0-*我有这样的结果

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. 

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 

我与Ubuntu的工作和我的版本是:

enter image description here

我能做些什么来使用函数utf8_encode或utf8_decode的功能呢?

更新1:

我试图安装php7.0常见,我已经得到了这样的结果:

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

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

更新2:

我不得不尝试安装命令和apt-get安装php7.0,MBSTRING但我还没有安装该模块。

我不得不尝试安装此另一个模块命令和apt-get安装php7.0,XMLRPC和我有同样的结果:

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. 

它不会为我工作。

更新3: 原设立:网络在UTF-8和MySQL数据库编撰,default character set latincollate latin1_spanish_ci;

从网络有一个时刻,我们要求一个地址服务器和地址,我们已经得到了特殊字符:

enter image description here

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

请求是好的。

enter image description here

但响应:

enter image description here

没有什么,没有任何反应!

现在,我们要编纂地址一样@duskwuff有建议:

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

请求是相同的,但我们已经有了一个应对现在!

enter image description here

如果我们在打印网页的地址,我们已经有了:

enter image description here

更新4:

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

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

enter image description here

确定。我会提出请求和回应,但不需要编码。不要忘记,数据库中的数据以UTF8格式保存。

请求成功,但请求:

enter image description here

没有反应,好像在更新3

但是,如果我们编纂与@duskwuff的建议的答复:

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

enter image description here

我们已收到回复;我们可以看到印在我们页面上的数据:

enter image description here

因此,我不知道为什么,但我必须将数据编纂为UTF8得到回应。

我创建模式和表:

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; 

,我们编纂的领域:

`direccion` VARCHAR(100) NOT NULL, 
+1

[utf8_(en | de)code from php7?](http://stackoverflow.com/q/35701730/1415724)和[函数utf8_encode undefined](http://stackoverflow.com/questions/38337444/功能-UTF8编码-未定义/ 38341255)。你看到那些了吗? –

+0

从你给我的网址我已经应用了两种可能的解决方案sudo a2enmod xml2enc和sudo apt-get php-patchwork-urf8它不适用于我:( –

+0

为什么你需要它? – zerkms

回答

3

不要使用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中未提供的任何字符。这将破坏以许多欧洲语言编写的文本,并且会使非拉丁文文本(如俄文或中文)完全无法读取。

+0

问题是他们甚至没有'ISO-8859-1'。他们的初始数据是utf-8,然后将它们存储在latin1中,然后在检索时需要将其转换回utf8。 – zerkms

+0

@zerkms因此,我注意到这些功能应该不是必需的。 – duskwuff

+0

在Windows上读取/写入文件名时,我不得不使用'utf8_decode' /'utf8_encode'。但是,这似乎在Linux上不是必需的。 – Aloso

相关问题