@@ -165,15 +165,20 @@
if (hit) {
char linkName[ld->privateData.getLength() + 1];
strn0cpy(linkName, (const char *)ld->privateData.getData(), sizeof(linkName));
+ char tmpiconvbuf[sizeof(linkName)*4];
+ int newstrlen = CharSetConv(tmpiconvbuf,sizeof(linkName)*4, linkName, sizeof(linkName) ,"ISO8859-15", "UTF-8");
+ char linkName_utf8[newstrlen];
+ strn0cpy(linkName_utf8, tmpiconvbuf, newstrlen);
+
cChannel *link = Channels.GetByChannelID(linkID);
if (link != channel) { // only link to other channels, not the same one
//fprintf(stderr, "Linkage %s %4d %4d %5d %5d %5d %5d %02X '%s'\n", hit ? "*" : "", channel->Number(), link ? link->Number() : -1, SiEitEvent.getEventId(), ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId(), ld->getLinkageType(), linkName);//XXX
if (link) {
if (Setup.UpdateChannels >= 1)
- link->SetName(linkName, "", "");
+ link->SetName(linkName_utf8, "", "");
}
else if (Setup.UpdateChannels >= 3) {
- link = Channels.NewChannel(channel, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
+ link = Channels.NewChannel(channel, linkName_utf8, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
//XXX patFilter->Trigger();
}
if (link) {
@@ -183,7 +188,7 @@
}
}
else
- channel->SetPortalName(linkName);
+ channel->SetPortalName(linkName_utf8);
}
}
}
@@ -59,11 +59,17 @@
char NameBuf[1024];
char ShortNameBuf[1024];
char ProviderNameBuf[1024];
+ char NameBuf_UTF8[1024*4];
+ char ShortNameBuf_UTF8[1024*4];
+ char ProviderNameBuf_UTF8[1024*4];
sd->serviceName.getText(NameBuf, ShortNameBuf, sizeof(NameBuf), sizeof(ShortNameBuf));
- char *pn = compactspace(NameBuf);
- char *ps = compactspace(ShortNameBuf);
+ CharSetConv(NameBuf_UTF8,1024*4, NameBuf, strlen(NameBuf)+1 ,"ISO8859-15", "UTF8");
+ CharSetConv(ShortNameBuf_UTF8,1024*4, ShortNameBuf, strlen(ShortNameBuf)+1 ,"ISO8859-15", "UTF8");
+ char *pn = compactspace(NameBuf_UTF8);
+ char *ps = compactspace(ShortNameBuf_UTF8);
sd->providerName.getText(ProviderNameBuf, sizeof(ProviderNameBuf));
- char *pp = compactspace(ProviderNameBuf);
+ CharSetConv(ProviderNameBuf_UTF8,1024*4, ProviderNameBuf, strlen(ProviderNameBuf)+1 ,"ISO8859-15", "UTF8");
+ char *pp = compactspace(ProviderNameBuf_UTF8);
if (channel) {
channel->SetId(sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
if (Setup.UpdateChannels >= 1)