2

I prepared the below CSharp code and I want to send that encoded data to js file where i want original data... Is it possible to decode it on js page Problem: the byte array send by csharp file is not decoded at js

 UTF8Encoding utf8 = new UTF8Encoding();
        String unicodeString = "ABCD";
        // Encode the string.
        Byte[] encodedBytes = utf8.GetBytes(unicodeString);
2
  • 1
    Have you tried this? stackoverflow.com/questions/13356493/… Commented Jul 10, 2015 at 5:41
  • @wojjas Yes, but it's something different and my doubt is something differenct Commented Jul 10, 2015 at 6:20

1 Answer 1

1

Try this

// Create Base64 Object
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}

// Define the string
var string = 'Hello World!';

// Encode the String
var encodedString = Base64.encode(string);
console.log(encodedString); // Outputs: "SGVsbG8gV29ybGQh"

// Decode the String
var decodedString = Base64.decode(encodedString);
console.log(decodedString); // Outputs: "Hello World!"

Reply of comment

Use this in c# to encode

var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
var encodedString = System.Convert.ToBase64String(plainTextBytes);

And decode in javascript decode like this

  var decodedString = Base64.decode(encodedString);
    console.log(decodedString);

Reference for decoding in javascript

Sign up to request clarification or add additional context in comments.

5 Comments

I don't want to use BASE64. Problem is I have Csharp code in UTF-8 format and i want to send it to Javascirpt file and decode there only
Where are you using this c#/javascript? @rakeshgupta
C sharp file or asp file having the code: UTF8Encoding utf8 = new UTF8Encoding(); String unicodeString = "µ"; // Encode the string. Byte[] encodedBytes = utf8.GetBytes(unicodeString); "now i am sending unicodestring to js" facing problem in js, not able to decode it
Sorry Manoj but code is not working,Reason is two times encoding. Ex: plaintext = "A" then first it convert into utf which is "65" then 65 is converted into Base64 which is qq== someting. on other side decoding also not working
In c# you have successfully encoded and decode in javascript here is a reference jsfiddle.net/gabrieleromanato/qAGHT @rakeshgupta

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.