(javascript) or (nodejs on windows) iconv from utf-8 to iso

I am using nodejs http.get method to publish data to php

But php charset is not UTF-8, it is ISO-8859-9 (Turkish)

Thus, the mail data will not be correctly inserted into the database,

this is my node js file:

var data="ğüşıöç ĞÜŞİÖÇ" var postdata="isim="+encodeURIComponent(data)+""; var options2 = { host: "localhost", port: 80, path: "/bbb.php", method: 'POST', headers:{"Host":"localhost","Content-Length": postdata.length,'Content-Type': 'application/x-www-form-urlencoded'} }; var post_req = http.get(options2, function (res) { var responseBody=''; res.on('data', function (d) { responseBody += d; }); res.on('end', function (d) { sys.print(responseBody); }); }).on('error', function (e) {sys.print(e.message);}); post_req.write(postdata); post_req.end(); 

and this is the php file:

 <? header('Content-type: text/html; charset=ISO-8859-9'); $dbbaglanti=mysql_connect("localhost", "root", ""); mysql_select_db("db"); mysql_query("SET NAMES 'latin5'"); $isim = $_POST["isim"]; mysql_query("insert into deneme (isim) values ('".$isim."')"); ?> 

the data is inserted into the database as follows: ÄÅÅ ± öç ÄÃÅÄÃÃÃÃ

but i know if i do this in php:

 $isim = iconv("utf-8","iso-8859-9",$_POST["isim"]); 

data is inserted without problems: ğüşıöç ĞÜŞİÖÇ

so how can i do it right? I searched many times many times, I can’t understand how I can do this. I know that there are some iconv extensions for nodejs, but they are for Linux, not windows. Is there any method like iconv in javascript or nodejs (windows)? or any extension for windows? or any other suggestions?

Please do not say that I am changing php-charset to utf-8, I cannot edit php, I gave localhost as an example.

+4
source share
1 answer

encodeURIComponent always encoded as utf-8 (and then turns the received utf-8 bytes into percent encoding), so I think you should use the library or collapse your own. I used the code from my library to do this:

 var encodeURIComponentLatin5 = (function() { var latin5 = [ 0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD ,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD ,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F ,0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F ,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F ,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F ,0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F ,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0xFFFD ,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD ,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD ,0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF ,0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF ,0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF ,0x011E,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x0130,0x015E,0x00DF ,0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF ,0x011F,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x0131,0x015F,0x00FF ]; var map = {}; latin5.forEach( function(v,i) { map[v] = i; }); function percentEncode( num ) { var str = num.toString(16); return "%" + (str.length < 2 ? "0" + str : str).toUpperCase(); } return function( str ) { var code, i = 0, ret = [], cp; while( !isNaN( code = str.charCodeAt(i++) ) ) { cp = map[code]; if( !cp || code === 0xFFFD ) { continue; } if( 65 <= code && code <= 90 || 97 <= code && code <= 122 || 48 <= code && code <= 57 || 45 <= code && code <= 46 || code === 95 || code === 126 ) { ret.push( str.charAt( i-1 ) ); } else { ret.push( percentEncode( cp ) ); } } return ret.join(""); }; })(); var data="ğüşıöç ĞÜŞİÖÇ"; var postdata="isim="+encodeURIComponentLatin5(data)+""; //"isim=%F0%FC%FE%FD%F6%E7%20%D0%DC%DE%DD%D6%C7" 
+2
source

All Articles