Hello,

Same problem on CentOS 7.1.

My environment contains:

23:25:30 (690) menu@ - ~ > echo $LC_TYPE 
iso_8859_1
23:25:48 (691) menu@ - ~ > echo $LANG
C
23:26:00 (692) menu@ - ~ > echo GDM_LANG
GDM_LANG

and I get:

23:27:02 (695) menu@ - ~/examples_libxml2 > ./EncodingConversionExample foo
--> content = foo
--> size = 4
--> out_size = 7
--> temp = 3
--> temp-size+1 = 0
conversion wasn't successful.
--> out = (null)
<?xml version="1.0" encoding="ISO-8859-1"?>
<root/>
23:27:20 (696) menu@ - ~/examples_libxml2 > ./EncodingConversionExample éöîà
--> content = éöîà
--> size = 9
--> out_size = 17
--> temp = 8
--> temp-size+1 = 0
conversion wasn't successful.
--> out = (null)
<?xml version="1.0" encoding="ISO-8859-1"?>
<root/>

I’m clearly doing something wrong, but what?

JM

> Le 25 nov. 2015 à 13:08, Menu Jacques <imj-...@bluewin.ch> a écrit :
> 
> I use:
> 
> 13:07:34 (254) menu@ - ~/libxml2-git > apt list libxml2 libxml2-dev
> Listing... Done
> libxml2/stable,now 2.9.1+dfsg1-5 i386 [installed,automatic]
> libxml2-dev/stable,now 2.9.1+dfsg1-5 i386 [installed]
> 
> on Debian 8 32bit (jessie)
> 
> JM
> 
>> Le 25 nov. 2015 à 11:17, Menu Jacques <imj-...@bluewin.ch> a écrit :
>> 
>> Hello folks,
>> 
>> I’ve successfully built the examples from 
>> http://xmlsoft.org/tutorial/index.html, except the last one about encoding 
>> conversion.
>> 
>> I added printouts to the original code to help (see below) and get:
>> 
>> 10:51:35 (250) menu@ - ~/libxml2-git > ./EncodingConversionExample foo
>> --> content = foo
>> --> size = 4
>> --> out_size = 7
>> --> temp = 3
>> --> temp-size+1 = 0
>> conversion wasn't successful.
>> --> out = (null)
>> <?xml version="1.0" encoding="ISO-8859-1"?>
>> <root/>
>> 
>> Thanks for your help!
>> 
>> JM
>> 
>> —
>> 
>> 11:15:24 (251) menu@ - ~/libxml2-git > cat EncodingConversionExample.c
>> #include <string.h>
>> #include <libxml/parser.h>
>> 
>> 
>> unsigned char*
>> convert (unsigned char *in, char *encoding)
>> {
>>      unsigned char *out;
>>       int ret,size,out_size,temp;
>>       xmlCharEncodingHandlerPtr handler;
>> 
>>       size = (int)strlen(in)+1; 
>>       out_size = size*2-1; 
>>       out = malloc((size_t)out_size); 
>> 
>>       printf("--> size = %d\n", size);
>>       printf("--> out_size = %d\n", out_size);
>> 
>>       if (out) {
>>               handler = xmlFindCharEncodingHandler(encoding);
>> 
>>               if (!handler) {
>>                       printf("--> %s encoding handler not found\n", 
>> encoding);
>>                       free(out);
>>                       out = NULL;
>>               }
>>       }
>> 
>>       if (out) {
>>               temp=size-1;
>>               printf("--> temp = %d\n", temp);
>> 
>>               ret = handler->input(out, &out_size, in, &temp);
>> 
>>               if (ret || temp-size+1) {
>>                       printf("--> temp-size+1 = %d\n", temp-size+1);
>> 
>>                       if (ret) {
>>                               printf("conversion wasn't successful.\n");
>>                       } else {
>>                               printf("conversion wasn't successful. 
>> converted: %i octets.\n",temp);
>>                       }
>> 
>>                       free(out);
>>                       out = NULL;
>>               } else {
>>                       out = realloc(out,out_size+1); 
>>                       out[out_size]=0; /*null terminating out*/
>> 
>>               }
>>       } else {
>>               printf("no mem\n");
>>       }
>>       return (out);
>> }    
>> 
>> 
>> int
>> main(int argc, char **argv) {
>> 
>>      unsigned char *content, *out;
>>      xmlDocPtr doc;
>>      xmlNodePtr rootnode;
>>      char *encoding = "ISO-8859-1";
>>      
>>              
>>      if (argc <= 1) {
>>              printf("Usage: %s content\n", argv[0]);
>>              return(0);
>>      }
>> 
>>      content = argv[1];
>>       printf("--> content = %s\n", content);
>> 
>>      out = convert(content, encoding);
>>       printf("--> out = %s\n", out);
>> 
>>      doc = xmlNewDoc ("1.0");
>>      rootnode = xmlNewDocNode(doc, NULL, (const xmlChar*)"root", out);
>>      xmlDocSetRootElement(doc, rootnode);
>> 
>>      xmlSaveFormatFileEnc("-", doc, encoding, 1);
>>      return (1);
>> }
>> 
> 

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to