Re: [PHP-DB] Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8PHP is loading white spaces
2016-11-22 12:42 GMT-02:00 Lester Caine <les...@lsces.co.uk>: > needs help to move > the string to a variable that it can check if the UTF8 data is a single > character or multiple characters. > > I believe it is a single byte, the goal is to simulate a boolean field, where I only use S for yes and N for no. (Idem/the same Y and N in English). There is no operations like 'upper' and 'lower'. The script is very simple, according to pastebin links in the previous message. S and N are in the range between 0 and 127 of the ASCII table and UTF-8 says that only one byte is required to encode the first 128 ASCII characters (Unicode U + to U + 007F). But even if it consumed 2, 3 or 4 bytes, UNICODE should predict the end of the character, so it would be enough to find the end, apply the inverse algorithm to the encoding of the code point, and we would have the character back. This is just a dream. If the situation presented along the thread is a problem, then more people should report it. Let's wait. I'll use trim per hour, or cast example $q = $pdoconn->prepare("SELECT CODIGO, CAST(ACESSOSISTEMA AS VARCHAR(1)) AS ACESSOSISTEMA FROM USUARIO"); And the problem is solved. Or yet another solution not thought out. Thank you for the precious information. Delmar Wichnieski
Re: [PHP-DB] Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8PHP is loading white spaces
But VARCHAR fields work correctly. Problem only in CHAR. And it should not be gambol, because "Each UTF is reversible, thus every UTF supports lossless round tripping: mapping from any Unicode coded character sequence S to a sequence of bytes and back will produce S again." Source http://unicode.org/faq/utf_bom.html 2016-11-22 11:21 GMT-02:00 Lester Caine <les...@lsces.co.uk>: > On 22/11/16 12:58, Delmar Wichnieski wrote: > > Since there was no answer here on the list, I was feeling alone and > afraid > > and wondering why no one else has this problem. > > Delmar I must apologise as I HAD posted a reply, but it did not actually > go through ... list in bounce emails mode which I missed ... > > The simple answer is that strings in PHP are not UTF8 so the 'bug' you > are listing is actually that we need to make sure that the single byte > buffer for a string is long enough. To ensure UTF8 strings to be handled > properly since PHP6 is not going to happen, we have to transfer the > simple php strings to mbstring objects. UTF8 is a gambol in PHP if it is > going to be transferred properly as a simple string variable and will > give string length as bytes rather than characters ... > > -- > Lester Caine - G8HFL > - > Contact - http://lsces.co.uk/wiki/?page=contact > L.S.Caine Electronic Services - http://lsces.co.uk > EnquirySolve - http://enquirysolve.com/ > Model Engineers Digital Workshop - http://medw.co.uk > Rainbow Digital Media - http://rainbowdigitalmedia.co.uk > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >
[PHP-DB] Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8PHP is loading white spaces
For 30 days, I avoided opening as a bug, because I researched a lot, I asked in some forums with more than 50 thousand users and I did not find anyone else with this problem, so much so that in the initial post, I asked if it could be a configuration problem, or bug or lack of full UFT8 support with Firebir CHAR fields. Since there was no answer here on the list, I was feeling alone and afraid and wondering why no one else has this problem. Environment test Windows 10 PHP 7.1.0RC5+ x64 VC14 TS Apache Lounge 2.4.23 x64 VC14 firebird 3.0.1 x64 configuration php.ini default_charset = "UTF-8" PHP script file with the test in UFT-8 Example CHAR SIZE 1 in the database 'S' In php results 'S ' instead of 'S' vardump (char_field) string (4) "S " (The issue is the same on ibase_query as PDO) IMPORTANT To isolate de problem, all create and insert were executed by isql ALL DDL DDL for all 5 collates http://pastebin.com/0dK6xqS5 script test php http://pastebin.com/ZRmMRiDy script test php with PDO http://pastebin.com/r7rErRyS 2016-11-22 10:05 GMT-02:00 Christoph M. Becker <cmbecke...@gmx.de>: > On 22.11.2016 at 12:27, Delmar Wichnieski wrote: > > > This issue also occurs with folow PHP versions (for any collate - UTF8) > > PHP 7.0.12+ > > PHP 7.1.0 RC4+ > > Firebir 2.5.5 + and Firebird-3.0.1.32609_0_x64 > > I have no test with other versions. > > > > > > The driver could map the SQLVARs of SQL_TEXT to SQL_VARYING and adjust > > offsets and lengths? > > > > Or else it has to do the manual work of identifying the charset (UTF8 = > > number 4) and get byte by byte by mounting the string disregarding the > > extra spaces. > > > > How to resolve without using trim or could there be a fix for an upcoming > > release if the drive is not able to work with CHAR fields in UTF8? > > > > 2016-10-21 10:24 GMT-02:00 Delmar Wichnieski <delmar.del...@gmail.com>: > > > >> Subject: > >> CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8 PHP is > >> loading white spaces > >> Example > >> 'S ' instead of 'S' > >> > >> Environment > >> Windows 10 > >> PHP 7.0.12 x64 VC14 TS > >> Apache Lounge 2.4.23 x64 VC14 > >> firebird 2.5.5 > >> > >> configuration > >> php.ini > >> default_charset = "UTF-8" > >> connection to the database > >> ibase_connect ( "localhost:" DB, user, pw, "UTF8". > >> connection PHP script file in UTF-8 > >> PHP script file with the test in UFT-8 > >> response header > >>Content-Type: text / html; charset = UTF-8 > >> file.html > >> > >> > >> Migration in Firebird 2.5.5 charset ISO8859_1 collate PT_BR to UTF8 and > >> UNICODE_CI_AI (firebird 2.5.5) > >> > >> DDL > >> > >> SET SQL DIALECT 3; > >> > >> SET NAMES UTF8; > >> > >> SET CLIENTLIB 'C:\Program Files\Firebird\Firebird_2_5_5\ > >> WOW64\fbclient.dll'; > >> > >> CREATE DATABASE 'D:\MYDB_UTF8.FDB' > >> USER 'SYSDBA' PASSWORD 'A' > >> PAGE_SIZE 4096 > >> DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI; > >> > >> CREATE TABLE USUARIO ( > >> CODIGO INTEGER NOT NULL, > >> USUARIOVARCHAR(20) CHARACTER SET UTF8 NOT NULL COLLATE > >> UNICODE_CI_AI, > >> SENHA VARCHAR(10) CHARACTER SET UTF8 NOT NULL COLLATE > >> UNICODE_CI_AI, > >> CODCIDADE INTEGER, > >> ACESSOSISTEMA CHAR(1) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI, > >> CPFVARCHAR(12) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI > >> ); > >> > >> > >> > >> Example > >> CHAR SIZE 1 > >> in the database > >> 'S' > >> In php results > >> 'S ' instead of 'S' > >> vardump (char_field) > >> string (4) "S " > >> > >> (Both ibase_query as PDO) > >> > >> Its a configuration problem, bug or not full support to UFT-8? > > On a quick glance, it seems this issue has been reported as bug, see > <https://bugs.php.net/bug.php?id=69347>. > > -- > Christoph M. Becker > >
[PHP-DB] Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8 PHP is loading white spaces
This issue also occurs with folow PHP versions (for any collate - UTF8) PHP 7.0.12+ PHP 7.1.0 RC4+ Firebir 2.5.5 + and Firebird-3.0.1.32609_0_x64 I have no test with other versions. The driver could map the SQLVARs of SQL_TEXT to SQL_VARYING and adjust offsets and lengths? Or else it has to do the manual work of identifying the charset (UTF8 = number 4) and get byte by byte by mounting the string disregarding the extra spaces. How to resolve without using trim or could there be a fix for an upcoming release if the drive is not able to work with CHAR fields in UTF8? 2016-10-21 10:24 GMT-02:00 Delmar Wichnieski <delmar.del...@gmail.com>: > Subject: > CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8 PHP is > loading white spaces > Example > 'S ' instead of 'S' > > Environment > Windows 10 > PHP 7.0.12 x64 VC14 TS > Apache Lounge 2.4.23 x64 VC14 > firebird 2.5.5 > > configuration > php.ini > default_charset = "UTF-8" > connection to the database > ibase_connect ( "localhost:" DB, user, pw, "UTF8". > connection PHP script file in UTF-8 > PHP script file with the test in UFT-8 > response header >Content-Type: text / html; charset = UTF-8 > file.html > > > Migration in Firebird 2.5.5 charset ISO8859_1 collate PT_BR to UTF8 and > UNICODE_CI_AI (firebird 2.5.5) > > DDL > > SET SQL DIALECT 3; > > SET NAMES UTF8; > > SET CLIENTLIB 'C:\Program Files\Firebird\Firebird_2_5_5\ > WOW64\fbclient.dll'; > > CREATE DATABASE 'D:\MYDB_UTF8.FDB' > USER 'SYSDBA' PASSWORD 'A' > PAGE_SIZE 4096 > DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI; > > CREATE TABLE USUARIO ( > CODIGO INTEGER NOT NULL, > USUARIOVARCHAR(20) CHARACTER SET UTF8 NOT NULL COLLATE > UNICODE_CI_AI, > SENHA VARCHAR(10) CHARACTER SET UTF8 NOT NULL COLLATE > UNICODE_CI_AI, > CODCIDADE INTEGER, > ACESSOSISTEMA CHAR(1) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI, > CPFVARCHAR(12) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI > ); > > > > Example > CHAR SIZE 1 > in the database > 'S' > In php results > 'S ' instead of 'S' > vardump (char_field) > string (4) "S " > > (Both ibase_query as PDO) > > Its a configuration problem, bug or not full support to UFT-8? > > Thank you very much! > > >
[PHP-DB] CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8 PHP is loading white spaces
Subject: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8 PHP is loading white spaces Example 'S ' instead of 'S' Environment Windows 10 PHP 7.0.12 x64 VC14 TS Apache Lounge 2.4.23 x64 VC14 firebird 2.5.5 configuration php.ini default_charset = "UTF-8" connection to the database ibase_connect ( "localhost:" DB, user, pw, "UTF8". connection PHP script file in UTF-8 PHP script file with the test in UFT-8 response header Content-Type: text / html; charset = UTF-8 file.html Migration in Firebird 2.5.5 charset ISO8859_1 collate PT_BR to UTF8 and UNICODE_CI_AI (firebird 2.5.5) DDL SET SQL DIALECT 3; SET NAMES UTF8; SET CLIENTLIB 'C:\Program Files\Firebird\Firebird_2_5_5\WOW64\fbclient.dll'; CREATE DATABASE 'D:\MYDB_UTF8.FDB' USER 'SYSDBA' PASSWORD 'A' PAGE_SIZE 4096 DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI; CREATE TABLE USUARIO ( CODIGO INTEGER NOT NULL, USUARIOVARCHAR(20) CHARACTER SET UTF8 NOT NULL COLLATE UNICODE_CI_AI, SENHA VARCHAR(10) CHARACTER SET UTF8 NOT NULL COLLATE UNICODE_CI_AI, CODCIDADE INTEGER, ACESSOSISTEMA CHAR(1) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI, CPFVARCHAR(12) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI ); Example CHAR SIZE 1 in the database 'S' In php results 'S ' instead of 'S' vardump (char_field) string (4) "S " (Both ibase_query as PDO) Its a configuration problem, bug or not full support to UFT-8? Thank you very much!
[PHP-DB] ibase_query - in php 7 is required the "link identifier"?
Hello I'm migrating from PHP 5.2 to PHP 7.0.0 VC14 x64 TS and using Firebird 2.5 on windows >From Manual << ibase_query (PHP 5) ibase_query — Execute a query on an InterBase database Description resource ibase_query ([ resource $link_identifier ], string $query [, int $bind_args ] ) Performs a query on an InterBase database. Parameters link_identifier An InterBase link identifier. If omitted, the last opened link is assumed. >> If link identifier is omitted, so that the last opened link is used, then php returns only ERR_CONNECTION_RESET. I searched for ibase_query on full changelog (5.X /7.0) and I found nothing. in php 7 is required the "link identifier" or is a bug? if it is required, the change was documented in one migration guides or changelog? thanks
[PHP-DB] php x64 VC11 ThreadSafe (experimental) and Firebird x64 support (on windows x64)
dear members php x64 VC11 (experimental) does not yet support x64 firebird? When it will support? environment Windows Server 2012 R2 Datacenter x64 = OK Firebird 2.5.4 x64 = OK Apache Lounge 2.4.12 VC11 x64 = OK PHP 5.6.8 VC11 x64 = OK In the php.ini file extension=php_interbase.dll and extension=php_pdo_firebird.dll were uncommented. The phpinfo (); Loaded Modules core mod_win32 mpm_winnt http_core mod_so mod_access_compat mod_actions mod_alias mod_allowmethods mod_asis mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_setenvif mod_php5 but it does not show anything about Interbase / Firebird. Has anyone ever managed to run all these programs on x64 and integrate?