Res: Res: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities
Thank you for your help. But the content of @$row[7] is a string (I have printed out it). If it is not a string, I cannot identify other variable to apply this function. =( Because the rest of the program is a sequence of ifs similar to the last if. Thanks in advance. Bianca - Mensagem original De: [EMAIL PROTECTED] [EMAIL PROTECTED] Para: Bianca Shibuya [EMAIL PROTECTED]; macosx@perl.org Cc: [EMAIL PROTECTED] Enviadas: Sábado, 27 de Setembro de 2008 21:54:30 Assunto: Re: Res: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities encode_utf8(@$row[7]) @$row[7] is not a string, it's an array containing the eighth element of @$row. Make sure what you are passing to encode_utf8 is a string by having your program print out the value. -pc The warning is still there. The code is below: my $page = get($URL); $te = HTML::TableExtract-new(); $te-parse($page); # parse() returns an arrayref containing each table encountered $cont_table = 0; foreach $ts ($te-tables) { ## foreach $ts ($te-tables) if ($cont_table == 1) { ## Reporter's name is stored in Table 1 Row 0 $cont_row = 0; foreach $row ($ts-rows) { if ($cont_row == 0) { if(!defined @$row[7]) { $reporter = '';} else { $reporter = encode_utf8(@$row[7]);} last; } $cont_row++; } } . } The error is at this line: $te-parse($page); but as it is an array.. I applied the encode_utf8 at its strings. I have applied decode too (according to To convert an input string of bytes which represents a UTF-8 string, into Perl's internal string format, we DECODE the byes to from UTF-8) but the error persists. Any help is welcome! Thanks in advance. Bianca - Mensagem original De: Bianca Shibuya [EMAIL PROTECTED] Para: [EMAIL PROTECTED]; macosx@perl.org Enviadas: Sábado, 27 de Setembro de 2008 20:08:22 Assunto: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities Ow.. that is right. Thank you! I will try it. - Mensagem original De: [EMAIL PROTECTED] [EMAIL PROTECTED] Para: Bianca Shibuya [EMAIL PROTECTED]; macosx@perl.org Cc: [EMAIL PROTECTED] Enviadas: Sábado, 27 de Setembro de 2008 19:58:27 Assunto: Re: Parsing of undecoded UTF-8 will give garbage when decoding entities You have to pass strings to encode_utf8, so call it after converting the tables to strings, whenever that occurs. What you tried, encode_utf8($te-parse($page)), is passing encode_utf8 an arrayref, which cannot work. The other things you tried are incorrect. -pc Hi people! It is me again. =( I am having this warning: Parsing of undecoded UTF-8 will give garbage when decoding entities. I have read that the solution is: The solution is to use the Encode::encode_utf8() on the data before feeding it to the $p-parse(). Ok then use the function encode_utf8(). But how? I have this piece of code: my $page = get($URL); $te = HTML::TableExtract-new(); $te-parse($page); # parse() returns an arrayref containing each table encountered $cont_table = 0; foreach $ts ($te-tables) { (...) I tried to use: encode_utf8($te-parse($page)); or: $te = encode_utf8(parse($page)); or: $te- encode_utf8(parse($page)); or $var-encode_utf8(parse($page)); and where there is $te-tables, place it by $var-tables You can see I dont know how to use it X-| Help me! Thank you. Bianca Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses
Re: Res: Res: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities
If you copy @$row[7] into a string variable you will see that its value is 1. What you meant is $$row[7] or $row-[7]. Any variable starting with @ is an array, so you cannot pass it to encode_utf8. Thank you for your help. But the content of @$row[7] is a string (I have printed out it). If it is not a string, I cannot identify other variable to apply this function. =( Because the rest of the program is a sequence of ifs similar to the last if. Thanks in advance. Bianca - Mensagem original De: [EMAIL PROTECTED] [EMAIL PROTECTED] Para: Bianca Shibuya [EMAIL PROTECTED]; macosx@perl.org Cc: [EMAIL PROTECTED] Enviadas: Sábado, 27 de Setembro de 2008 21:54:30 Assunto: Re: Res: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities encode_utf8(@$row[7]) @$row[7] is not a string, it's an array containing the eighth element of @$row. Make sure what you are passing to encode_utf8 is a string by having your program print out the value. -pc The warning is still there. The code is below: my $page = get($URL); $te = HTML::TableExtract-new(); $te-parse($page); # parse() returns an arrayref containing each table encountered $cont_table = 0; foreach $ts ($te-tables) { ## foreach $ts ($te-tables) if ($cont_table == 1) { ## Reporter's name is stored in Table 1 Row 0 $cont_row = 0; foreach $row ($ts-rows) { if ($cont_row == 0) { if(!defined @$row[7]) { $reporter = '';} else { $reporter = encode_utf8(@$row[7]);} last; } $cont_row++; } } . } The error is at this line: $te-parse($page); but as it is an array.. I applied the encode_utf8 at its strings. I have applied decode too (according to To convert an input string of bytes which represents a UTF-8 string, into Perl's internal string format, we DECODE the byes to from UTF-8) but the error persists. Any help is welcome! Thanks in advance. Bianca - Mensagem original De: Bianca Shibuya [EMAIL PROTECTED] Para: [EMAIL PROTECTED]; macosx@perl.org Enviadas: Sábado, 27 de Setembro de 2008 20:08:22 Assunto: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities Ow.. that is right. Thank you! I will try it. - Mensagem original De: [EMAIL PROTECTED] [EMAIL PROTECTED] Para: Bianca Shibuya [EMAIL PROTECTED]; macosx@perl.org Cc: [EMAIL PROTECTED] Enviadas: Sábado, 27 de Setembro de 2008 19:58:27 Assunto: Re: Parsing of undecoded UTF-8 will give garbage when decoding entities You have to pass strings to encode_utf8, so call it after converting the tables to strings, whenever that occurs. What you tried, encode_utf8($te-parse($page)), is passing encode_utf8 an arrayref, which cannot work. The other things you tried are incorrect. -pc Hi people! It is me again. =( I am having this warning: Parsing of undecoded UTF-8 will give garbage when decoding entities. I have read that the solution is: The solution is to use the Encode::encode_utf8() on the data before feeding it to the $p-parse(). Ok then use the function encode_utf8(). But how? I have this piece of code: my $page = get($URL); $te = HTML::TableExtract-new(); $te-parse($page); # parse() returns an arrayref containing each table encountered $cont_table = 0; foreach $ts ($te-tables) { (...) I tried to use: encode_utf8($te-parse($page)); or: $te = encode_utf8(parse($page)); or: $te- encode_utf8(parse($page)); or $var-encode_utf8(parse($page)); and where there is $te-tables, place it by $var-tables You can see I dont know how to use it X-| Help me! Thank you. Bianca Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses
Re: Res: Res: Res: Parsing of undecoded UTF-8 will give garbage when decoding entities
On Sep 27, 2008, at 10:00, Bianca Shibuya [EMAIL PROTECTED] wrote: Thank you for your help. But the content of @$row[7] is a string (I have printed out it). If it is not a string, I cannot identify other variable to apply this function. =( Because the rest of the program is a sequence of ifs similar to the last if. Thanks in advance. Bianca If you said print @$row[7]; Then that is equivalent to print join $,, @$row[7]; To really see the value of that expression you need to say print map { [$_] } @$row[7]; This will print the individual items in the list surrounded by brackets.