git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
why not allow directly utf8 encoded dvb texts? ;)
[enigma2.git]
/
lib
/
base
/
estring.cpp
diff --git
a/lib/base/estring.cpp
b/lib/base/estring.cpp
index 10bfbef81ca130febe685bb7fbe6f3538d8e5ddf..014f6e7d89c33deb1ee933f5c63b89692a9aac95 100644
(file)
--- a/
lib/base/estring.cpp
+++ b/
lib/base/estring.cpp
@@
-334,19
+334,21
@@
std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts
switch(data[0])
{
switch(data[0])
{
- case 1 ... 1
2
:
+ case 1 ... 1
1
:
table=data[i++]+4;
table=data[i++]+4;
-// eDebug("(1..1
2
)text encoded in ISO-8859-%d",table);
+// eDebug("(1..1
1
)text encoded in ISO-8859-%d",table);
break;
case 0x10:
{
// eDebug("(0x10)text encoded in ISO-8859-%d",n);
break;
case 0x10:
{
// eDebug("(0x10)text encoded in ISO-8859-%d",n);
- int n=(data[++i]<<8)|(data[++i]);
+ int n=(data[++i]<<8);
+ n |= (data[++i]);
++i;
switch(n)
{
case 12:
eDebug("unsup. ISO8859-12 enc.", n);
++i;
switch(n)
{
case 12:
eDebug("unsup. ISO8859-12 enc.", n);
+ break;
default:
table=n;
break;
default:
table=n;
break;
@@
-369,9
+371,12
@@
std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts
++i;
eDebug("unsup. Big5 subset of ISO/IEC 10646-1 enc.");
break;
++i;
eDebug("unsup. Big5 subset of ISO/IEC 10646-1 enc.");
break;
+ case 0x15: // UTF-8 encoding of ISO/IEC 10646-1
+ return std::string((char*)data+1, len-1);
case 0x0:
case 0x0:
- case 0xD ... 0xF:
- case 0x15 ... 0x1F:
+ case 0xC ... 0xF:
+ case 0x16 ... 0x1F:
+ default:
eDebug("reserved %d", data[0]);
++i;
break;
eDebug("reserved %d", data[0]);
++i;
break;
@@
-521,7
+526,7
@@
std::string convertLatin1UTF8(const std::string &string)
while (i < len)
{
while (i < len)
{
- unsigned long code=string[i++];
+ unsigned long code=
(unsigned char)
string[i++];
// Unicode->UTF8 encoding
if (code < 0x80) // identity latin <-> utf8 mapping
res[t++]=char(code);
// Unicode->UTF8 encoding
if (code < 0x80) // identity latin <-> utf8 mapping
res[t++]=char(code);