the code won&#39;t fail, but you would do an UPDATE more often that you need to.<br><br>the key-value from the database is utf8, &quot;foo=bar&quot;<br>the key-value from the http form is, say, ebcdic, &quot;foo=bar&quot;<br>
<br>utf8 &quot;bar&quot; does not equal ebcdic &quot;bar&quot;<br><br>update database with decode(&quot;ebcdic&quot;, $input_form{foo}) , which will update the database with exactly the same string as what&#39;s already there.<br>
<br>to save on database updates, one would <br>
<br>my $charset_from_http_header;<br>... set $charset_from_http_header ...<br><br>while (my ($key, $value) = each %new_input_from_http_form)<br>
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $decoded_key = decode($charset_from_http_header, $key);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $decoded_value = decode($charset_from_http_header, $value); ## or $new_input_from_http_form{$key}<br><br>
 &nbsp; &nbsp; &nbsp; &nbsp;if ( $decoded_value ne $old_input_saved_in_db{$decoded_key} )&nbsp; ## important that $decoded_key is used here<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Update the DB using the &#39;$decoded_value&#39; value.<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
}<br><br>well ... the http form keys are probably ascii, since you would have designed the form, and therefore $decoded_key is the same as $key.&nbsp; the form&#39;s key and value pairs will be encoded as per the http header charset.&nbsp; if the browser is set to an ebcdic code page, you&#39;ll be in trouble if you don&#39;t decode the key.&nbsp; that would be really wierd though, having a browser doing ebcdic.&nbsp; however, i wouldn&#39;t be surprised if there weren&#39;t other code pages that are not ascii friendly, like maybe mandarin, thai, tibet, whatever.<br>
<br>the binary representation of an ascii string is the same in latin1 as it is in any of the iso-8859 dialects, and in utf8.&nbsp; but if you render that same string in ebcdic, kansas goes bye bye.<br><br>-rob<br><br><div class="gmail_quote">
On Wed, Jul 9, 2008 at 12:50 PM, Madison Kelly &lt;<a href="mailto:linux@alteeve.com">linux@alteeve.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Rob Janes wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
oops, first reply went to Madison alone ...<br>
<br>
I think this is better ...<br>
<br>
use Encode qw(from_to decode);<br>
<br>
my $data = &quot;Résidence&quot;;<br>
from_to($data, &quot;iso-8859-1&quot;, &quot;utf8&quot;); ## assuming Résidence is encoded in 8859-1<br>
or<br>
my $data = decode(&quot;iso-8859-1&quot;, &quot;Résidence&quot;);<br>
<br>
both of these will create a utf8 string from Résidence. &nbsp;However, depending on the original encoding of Résidence, what&#39;s stored in the database may or may not be what you want.<br>
<br>
In other words, the lack of an error message is not indicative of it working.<br>
<br>
-rob<br>
</blockquote>
<br></div>
I am not sure if this is the most ... appropriate way to solve the problem, so I would still love to have some feedback if you (or anyone) has any.<br>
<br>
I got it working this way:<br>
<br>
- Read the data from the website and push it into a hash (hidden input values stored as &quot;$input{name}=value;&quot;.<br>
- Loop through the &#39;%input&#39; hash keys and populate a new hash &#39;%enc_input&#39; with the same format.<br>
- Read the old values from the database into a matching hash called &#39;%old_input&#39;.<br>
- Pseduo-code:<br>
foreach $key (keys %input)<br>
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if ( $input{$key} ne $old_input{$key} )<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Update the DB using the &#39;$enc_input&#39; hash value.<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
}<br>
<br>
It&#39;s ugly as sin, but it seems like the only time I need to use &#39;Encode&#39; functions are in the actual PgSQL INPUT or UPDATE calls; not in the comparison of the value either from the HTML page or from the database.<br>

<br>
Odd.<br>
<br>
Thanks for your help, Rob and Cees!<br>
<br>
Madi<br>
</blockquote></div><br>