Encoded string works if assigned as static value

50 Views Asked by At

I am experiencing difficulty decompressing the input value, but when I use the same value as a static string within the code, it can be decompressed successfully. To verify this, if you click on submit button without typing any text it will return decompressed value, but if you input the below encoded string it will throw an error.

Encoded string

\u001f\u008b\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0003\u008d\u0094ͪÛ0\u0010\u0085_¥¨[;è_£l/-t×}\u0008A±å[\u0017\'vm9%\u0084¼{Çq¬Èp[\n\u0001\u0013}\u009a9G#Íìn¤\u001dC7\u0086\u0081lw7R\u0097dKÀ)\u0090ÜT9\u0013\u0096æÒW.?\u001a/ó\u0092\u0015\u00950UE\u009d1${Æ\u001dÞ}ûshÏd{#áÚy\u008cÿê]\u0018{ÿÖ6\u008d/B\u008d,#Õ¼6«¬÷\u0021Å\u001c\'\u001fúk\u0092ä{Û\\ß\u001f¡EÛöe}vá\u0011½ÛåVl¤æT3©­Í$Û\u0018*8gV\u0082Ùg/lµ\u0082\u0014s\u0080\u0017f\u008csmô\u00825\u0007\u0095P\u0081K\u0002T¤\u0096sËV\u0098i`\u000b\u0006m©\u0092Inj9Ó1\u001a\u0094\u0015¤Xk+LÄ À\u0088\u0015fhï\u0089\u0005î\u0095"5N\u008d\u008dÇ\u0012\u001a¤L¥\u0005å \u0085þ\u0007fB.XI­\u008cPiÍð` "6LY³Æ\n\u0016ãJ(EE\u0092\u009c\u0002·\u009aÚ\u0088%\u0093 R,@*¾`F\u0099Q|\u0015\u008d;br¼>ü­´¥bÑ\u001a\u0005 2M\u008e5\u0083¨\u008d\u0017&µY9ÿè­ O\u008a.%\u0087è]X,Ó+\u009e[\u0085êò\u0085\u0005¤wÂQ\u000e?O,\u0019W\u0006\u0092²r°TÒåh\u0098ZI\u0096Re\u0018Ä+³Ô0ºz\u000e\u0086ª\u0098\u001b±äjõ\u001c>2¾ßß3ÒõmçûPOm3w6Ë\u0088ë½#[®\u0094Ù`5\u0009n¨±ó|O¶\u001aÄFÙ\u008c4îêûoÿ=\u0007î÷Ik\u0008×ÆO2EÛ´\u0098\u008c|¦ Þ¾plßßu\u0019~ $\u000e\u008cÎ\u0015uÀ&§\u001b\u009d\u0091z8\\ê¡>Nq¡\u001fýSù\u0080Í>Ùa÷84\u0016û\u0004+Q\u0018(u®­\u0083\u001cëló£4Ç\u009c\u001e\u008feI©óÔST<»Óc\u0082¸\u008b?ùsHæËa\u001e.â¡^\u008cChOd[¹fðóJ{êÜùzhüÅ7/Pb\u0092ºª\'W¤[\u0092¢½\u0093w\u0003Ú\u009bþÎsí)ü¨qF.®\u0019ý\\ë\u008c\u008cç: \u001a~}ª&C(\u0086ã³Ä\u0099VΧ¿g1üu\'1\u0007öqLñ\u0097øýcÑá¼½øeé¾ÿ\u0003gÑçýß\u0005\u0000\u0000

const Buffer = buffer.Buffer;
const {inflate} = pako;
const { useCallback, useEffect, useState, ReactDom } = React;
 function App() {
// debugger
  const [compressedString, setCompressedString] = useState("");
  const copyGeojson = useCallback(() => {
   
    let compressedString2 = '\u001f\u008b\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0003\u008d\u0094ͪÛ0\u0010\u0085_¥¨[;è_£l/-t×}\u0008A±å[\u0017\'vm9%\u0084¼{Çq¬Èp[\n\u0001\u0013}\u009a9G#Íìn¤\u001dC7\u0086\u0081lw7R\u0097dKÀ)\u0090ÜT9\u0013\u0096æÒW.?\u001a/ó\u0092\u0015\u00950UE\u009d1${Æ\u001dÞ}ûshÏd{#áÚy\u008cÿê]\u0018{ÿÖ6\u008d/B\u008d,#Õ¼6«¬÷\u0021Å\u001c\'\u001fúk\u0092ä{Û\\ß\u001f¡EÛöe}vá\u0011½ÛåVl¤æT3©­Í$Û\u0018*8gV\u0082Ùg/lµ\u0082\u0014s\u0080\u0017f\u008csmô\u00825\u0007\u0095P\u0081K\u0002T¤\u0096sËV\u0098i`\u000b\u0006m©\u0092Inj9Ó1\u001a\u0094\u0015¤Xk+LÄ À\u0088\u0015fhï\u0089\u0005î\u0095"5N\u008d\u008dÇ\u0012\u001a¤L¥\u0005å \u0085þ\u0007fB.XI­\u008cPiÍð` "6LY³Æ\n\u0016ãJ(EE\u0092\u009c\u0002·\u009aÚ\u0088%\u0093 R,@*¾`F\u0099Q|\u0015\u008d;br¼>ü­´¥bÑ\u001a\u0005 2M\u008e5\u0083¨\u008d\u0017&µY9ÿè­ O\u008a.%\u0087è]X,Ó+\u009e[\u0085êò\u0085\u0005¤wÂQ\u000e?O,\u0019W\u0006\u0092²r°TÒåh\u0098ZI\u0096Re\u0018Ä+³Ô0ºz\u000e\u0086ª\u0098\u001b±äjõ\u001c>2¾ßß3ÒõmçûPOm3w6Ë\u0088ë½#[®\u0094Ù`5\u0009n¨±ó|O¶\u001aÄFÙ\u008c4îêûoÿ=\u0007î÷Ik\u0008×ÆO2EÛ´\u0098\u008c|¦ Þ¾plßßu\u0019~ $\u000e\u008cÎ\u0015uÀ&§\u001b\u009d\u0091z8\\ê¡>Nq¡\u001fýSù\u0080Í>Ùa÷84\u0016û\u0004+Q\u0018(u®­\u0083\u001cëló£4Ç\u009c\u001e\u008feI©óÔST<»Óc\u0082¸\u008b?ùsHæËa\u001e.â¡^\u008cChOd[¹fðóJ{êÜùzhüÅ7/Pb\u0092ºª\'W¤[\u0092¢½\u0093w\u0003Ú\u009bþÎsí)ü¨qF.®\u0019ý\\ë\u008c\u008cç: \u001a~}ª&C(\u0086ã³Ä\u0099VΧ¿g1üu\'1\u0007öqLñ\u0097øýcÑá¼½øeé¾ÿ\u0003gÑçýß\u0005\u0000\u0000';
    try {
      const response = JSON.parse(
        inflate(
          new Uint8Array(
            Buffer.from(
              compressedString || compressedString2,
              "binary"
            )
          ),
          { to: "string" }
        )
      );
  console.log(response[0].outputs[0].output_geojson);

navigator.clipboard.writeText(JSON.stringify(response[0].outputs[0].output_geojson))
        .then(() => {
          alert("Copied");
        });
    } catch (err) {
      console.error(err);
    }
  }, [compressedString]);

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
      <label htmlFor="uncompressed-string">Enter compressed string</label>
      <input
        id="uncompressed-string"
        type="text"
        onChange={(e) => setCompressedString(e.target.value)}
        value={compressedString}
      />
      <button type="button" onClick={copyGeojson}>
        Submit
      </button>
      
    </div>
  );
}

ReactDOM.createRoot(
    document.getElementById("root")
).render(<App/>);
<script src="https://bundle.run/[email protected]"></script>
<script src="https://unpkg.com/[email protected]/dist/pako.min.js"></script>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.development.js"></script>

0

There are 0 best solutions below