Open GoogleCodeExporter opened 9 years ago
Ps, thanks for a really great script. I have a feeling this will be really
useful :-)
Original comment by steeky...@gmail.com
on 12 Apr 2011 at 10:26
Definitely interesting. Not quite sure how to fix this... I would think setting
it to ISO-8859-1 could cause issues for other special characters (though I am
not knowledgeable in character sets).
I suppose we could add a drop down box to change the character set (both a
default, and then a per session).
Original comment by ian.aldr...@gmail.com
on 13 Apr 2011 at 3:49
I have the same problem with romanian characters, like: şţăî. To solve this
I choose ISO-8859-2 (edit the source like steeky..)
You could add a drop-down list where we could choose from different page
encodings, like UTF-8, ISO-8859-2, ISO-8859-1, Latin 1, etc. Phpmyadmin manages
to get the encoding for the page from the database encoding, but I don`t think
this is possible with sqlite. You could for example test the charset that is
sent by the apache server, for example, and select it.
Original comment by cara...@gmail.com
on 13 Apr 2011 at 11:04
Hi, I just had a look to see how PHPMyAdmin does it. I previously had no
problems with characters in in that. PHPMyAdmin on both the servers I use has
the following code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
Tomorrow in work I will play around with this on phpliteadmin to see what
effect that would have.
Original comment by steeky...@gmail.com
on 13 Apr 2011 at 11:44
Yeah, it wouldn't really work on SQLite, because there is no specification of
charset for databases/tables.
I have a few things planned:
- Global charset option.
- Per-database charset option.
- Per-session charset option.
Original comment by ian.aldr...@gmail.com
on 14 Apr 2011 at 2:00
I work a lot with multiple languages (mostly: arabic and german) and i had in
the past the problem viewing non-latin chars when using the php "preg_match"
function (also preg_split, preg_replace, preg_match_all). I always got such
results (�����).
Later i found out that preg_functions needs the u-modifier (PCRE_UTF8
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php ) when
working with UTF-8 ducuments.
example: preg_match('/müller/ui', $str);
since than i can sleep better :D
Original comment by teryaki1...@googlemail.com
on 3 Nov 2012 at 12:49
I think the current version does not have that many problems with special
characters as the version the original poster used back in 2011.
PhpLiteAdmin now uses UTF-8 for the Frontened. In the posts before, meta
http-equiv examples were posted. In 1.9.3, I added a real HTTP-Header sent by
phpLiteAdmin to set the charset. This works a lot better with any browser.
I just tried to create a table with the Spanish text posted (¿Le/Te gustaría
ir a tomar una copa/café?). The table, column, default value and actual value
all has this text. I could create this easily without any errors and the result
is as expected. See screenshot.
It would be good if somebody could post an example of something that does not
work at the moment.
@Teryaki: Very good point. We use preg_* at some places (mostly in alterTable)
and this might be a problem. But I could not produce any problem here as well.
I can easily rename the column with a name containing special characters.
Of course we have a problem if the text inside the DB is not UTF-8, e.g.
because saved in there by another application. Maybe we should try this and see
if we can do something about this, e.g. allow the user to select the charset
per-database (as ian had planned).
Original comment by crazy4ch...@gmail.com
on 3 Nov 2012 at 3:24
Attachments:
By the way: For full UTF8-support, we don't only need to check preg_* but also
any other string-function. There are a lot of multibyte-Functions in php for
UTF8 nowadays: http://php.net/manual/en/book.mbstring.php
Original comment by crazy4ch...@gmail.com
on 3 Nov 2012 at 3:44
-- I think the current version does not have that many problems with special
characters --
yep, i didn't notice any error according to non-latin chars in this version.
-- e.g. allow the user to select the charset per-database (as ian had planned)--
I'm not sure if we really need this for sqlite (comparing to mySql)
--There are a lot of multibyte-Functions in php for UTF8 nowadays--
Yah i tried it for few months ago but i noticed that many servers do not
support this extension unfortunately. (mbstring is a non-default extension.
http://www.php.net/manual/en/mbstring.installation.php )
any way its one of the best solutions and one can check if extension_loaded().
Greeting
Original comment by teryaki1...@googlemail.com
on 3 Nov 2012 at 9:41
I though mbstring comes with recent PHP by default, but it seems I was wrong.
That's really a shame. Looks like I need to change things in another OpenSource
script I wrote (CrazyStat, http://en.christosoft.de/CrazyStat ), because I used
lots of mb_* there in the last version without checking whether it's available
by default. Thanks for making me aware of this. (But nobody complained yet, so
I guess lots of people have it enabled).
I found out than in SQLite, there is a Charset defined per-database that cannot
be changed after creation of the db. You can find it out using
PRAGMA encoding;
(Note: In phpLiteAdmin 1.9.3, there is a bug that will not show the result of
this if you run it on the db-level. Either run it on the table-level or use the
1.9.4 development version which I just created and where this is fixed)
But there seems to be only UTF-8 and UTF-16 (variants) possible:
http://www.sqlite.org/pragma.html#pragma_encoding
This does not seem to work with SQlite2. I guess SQLite2 did not support UTF-8
(see http://www.sqlite.org/version3.html ).
But of course, setting a charset for a DB is one thing. Inserting data in
another charset is another thing which I guess is still possible:
"SQLite is not particular about the text it receives and is more than happy to
process text strings that are not normalized or even well-formed UTF-8 or
UTF-16. Thus, programmers who want to store IS08859 data can do so using the
UTF-8 interfaces. As long as no attempts are made to use a UTF-16 collating
sequence or SQL function, the byte sequence of the text will not be modified in
any way. "
So apart from what "PRAGMA encoding" returns, we might still have ISO-8859-1
data in a SQLite3 database. This might cause us some problems.
I guess we really need to allow the user to set a charset manually.
Original comment by crazy4ch...@gmail.com
on 4 Nov 2012 at 9:03
Ok, I was only afraid of not to get lost in the encoding world of old days of
Mysql, and that’s one of the reasons why sqlite became my choice of database
(simplicity!).
I’m just a bit careful with Pragma statements within phpLiteAdmin’s code.
As it says:
“Specific pragma statements may be removed and others added in future releases of SQLite. There is no guarantee of backwards compatibility.”
And some of statements are already been deprecated (See: list of Pragmas).
But as I said, I’m not sure about it but before I add anything that might
change in the future, I prefer to make a list of all special statements and
offer them as a plugin.
I also won’t bother myself too much with sqlite2 (maybe a little egoist from
me) because of the big difference to v.3 not only in encoding also Blob etc.
that’s why I don’t use it in havalite and I believe, 1 or 2 years and its
done (just silly thoughts :D )
Any way if you think its important to add such a functionality, so nothing to
lose and maybe we benefit from it
cheers
Original comment by teryaki1...@googlemail.com
on 5 Nov 2012 at 1:52
from attached file
** This file contains an SQLite 2.1 database **
probably you just need to upgrade to sqlite3 and your issue will go away?
Original comment by ykoro...@gmail.com
on 7 Nov 2013 at 4:12
We don't really have problems with special characters anymore, we consistently
use UTF-8 and this works nicely.
The remaining issue is that users might still have data with other character
sets in their db (because some other program inserted it in there).
So we should add an option to change the character encoding in phpLiteAdmin. I
think per-database makes most sense.
Original comment by crazy4ch...@gmail.com
on 15 Jan 2014 at 2:25
Original issue reported on code.google.com by
steeky...@gmail.com
on 12 Apr 2011 at 10:23Attachments: