downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

recode_file> <readline
[edit] Last updated: Mon, 01 Nov 2010

view this page in

CXXVII. Funciones GNU Recode

Introducción

Este módulo contiene una interfaz con la biblioteca GNU Recode. La biblioteca GNU Recode convierte archivos entre varios juegos de caracteres codificados y codificaciones de superficie. Cuando esto no puede conseguirse con exactitud, puede que se deshaga de los caracteres problemáticos o recurra a aproximaciones. La biblioteca reconoce o produce cerca de 150 juegos de caracteres diferentes y es capaz de convertir archivos entre casi cualquier par de ellos. La mayoría de juegos de caracteres del documento RFC 1345 se encuentran soportados.

Nota: Esta extensión no está disponible en plataformas Windows

Requisitos

Usted debe tener instalado GNU Recode 3.5 o superior en su sistema. Puede descargar el paquete desde http://directory.fsf.org/All_GNU_Packages/recode.html.

Aviso

La versión 3.6 de la biblioteca Recode agrega caracteres extraños detrás de cadenas convertidas bajo ciertas circunstancias. Por lo tanto es más seguro usar Recode v3.5 o alguna de las alternativas disponibles, como las extensiones iconv o mbstring.

Instalación

To be able to use the functions defined in this module you must compile your PHP interpreter using the --with-recode[=DIR] option.

Aviso

Crashes and startup problems of PHP may be encountered when loading the recode as extension after loading any extension of mysql or imap. Loading the recode before those extension has proved to fix the problem. This is due a technical problem that both the c-client library used by imap and recode have their own hash_lookup() function and both mysql and recode have their own hash_insert function.

Aviso

La extensión IMAP no puede ser usada junto con las extensiones recode, YAZ ó Cyrus. Esto es debido a que las dos utilizan el mismo símbolo interno

Configuración en tiempo de ejecución

Esta extensión no tiene directivas de configuración en php.ini.

Tipos de recursos

Esta extensión no tiene ningún tipo de recurso definido.

Constantes predefinidas

Esta extensión no tiene ninguna constante definida.

Tabla de contenidos
recode_file --  Recodificar de un archivo a otro de acuerdo a la petición de recodificación
recode_string -- Recodifica una cadena literal segun una peticion de recodificacion.
recode -- Alias of recode_string()


recode_file> <readline
[edit] Last updated: Mon, 01 Nov 2010
 
add a note add a note User Contributed Notes Funciones GNU Recode
theather at I dot am 07-Aug-2005 06:55
I see that the Recode (3.6) module is also incompatible with the MySQL module as well as the others noted in the "warning" note above.
pet at humaj dot sk 30-Apr-2003 06:51
Hope this might help someone:

I tried to compile php 4.3.2-RC2 (+some older versions) with recode AND imap (and gd+png+jpeg support, ldap, gettext, zlib .. but these are not interesting right now).

Why? I needed to run Imp + Horde + Turba. Turba talks to LDAP directory (and LDAP uses utf-8 encoding which I need to convert to iso-8859-2), so I modified Turba to use 'recode' for charset conversions utf8<->iso8859-2.

System: FreeBSD4.7+Apache 1.3.27+Ben SSL

I either could not properly compile OR after compiling apache coredumped.

Problem was: imap (libc-client) and recode (librecode) use the same function hash_lookup(). Therefore during loading libphp.so (and libraries it depended on) whole apache crashed. Without a word of what's going on.

The problem is detectable by forcing static linking (in FreeBSD modify librecode.la and change
library_names='librecode.so.0 librecode.so librecode.so'
to
library_names='librecode.a'

Now during linking of php the linker complains of double definition of hash_lookup.

Solution:

-grab recode3.6 from ftp://ftp.gnu.org/pub/gnu/recode/
-unpack, go to src, in files combine.c, hash.c, names.c, recode.c, testdump.c, html.c, hash.h replace hash_lookup() by hash_lookupX() [or invent some better name],
compile recode (i had to do:

setenv CFLAGS "-I/usr/local/include"
setenv LDFLAGS "-L/usr/local/lib -lintl"
./configure --prefix=/usr/local/recode --exec-prefix=/usr/local/recode --without-included-gettext
make
make check
make install

(recode is installed to /usr/local/recode.You can change this and you can force static linking of recode, so that after building libphp.so this modified recode is no longer needed and can be deleted! )

For some reason this recode needs to have externally defined
int error;
therefore we have to modify configure script +one .c php source file:

1. modify configure script of php: find
recode_format_table();
and somewhere before start of main() add
int error;

so the result is:

char *program_name;
int error;
int main() {
recode_format_table();
; return 0; }

(I modified both occurences of recode_format_table() in configure of php4.3.2rc2)

2. run configure, should work ok (my another problem was with imap: though my c-client was compiled WITHOUT ssl, configure complained that it IS using ssl, so i had to edit configure once again and comment following lines:
void mm_searched(void){}
void mm_expunged(void){}
// char ssl_onceonlyinit();  --- commented
int main() {
// ssl_onceonlyinit(); --- commented
return 0;
}

Now configure was rather happy :-)

for the record: I did
./configure --with-apxs=/usr/local/apache/bin/apxs --with-imap --enable-sysvsem --enable-sysvshm --with-sybase=/usr/local/freetds --with-gettext --with-ldap --with-zlib --with-recode=/usr/local/recode -with-gd=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local

3. edit ext/recode/recode.c (or any other .c source file, add somewhere (e.g. at the end)
int error;

without it during linking 'error not defined' will be complained.

4. do 'make' and php is yours :-)

It took me 2 days.. so do not delete this note, someone might even find it useful and mail me his thanks :-]
cv at corbach dot de 03-Feb-2002 09:06
When compiling PHP into Apache as static module Apache configure will complain about an undefined symbol in librecode. You need recode-3.6 (e.g. on ftp://ftp.gnu.org/pub/gnu/recode/) to get rid of this error. It doesn't matter if you're compiling PHP as DSO.

 
show source | credits | sitemap | contact | advertising | mirror sites