encodingutil.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // Licensed Materials - Property of IBM
  2. //
  3. // IBM Cognos Products: pps
  4. //
  5. // (C) Copyright IBM Corp. 2005, 2017
  6. //
  7. // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. // Encoding Utilities
  9. function CEncodingUtil() {};
  10. CEncodingUtil.HtmlEncode = function(str)
  11. {
  12. var encodedStr = "";
  13. for (var i = 0; i < str.length; i++) {
  14. switch(str.charAt(i))
  15. {
  16. case '<':
  17. encodedStr += "&lt;";
  18. break;
  19. case '>':
  20. encodedStr += "&gt;";
  21. break;
  22. case '&':
  23. encodedStr += "&amp;";
  24. break;
  25. case '"':
  26. encodedStr += "&quot;";
  27. break;
  28. case '\'':
  29. encodedStr += "&#39;";
  30. break;
  31. default:
  32. encodedStr += str.charAt(i);
  33. break;
  34. }
  35. }
  36. return encodedStr;
  37. }
  38. CEncodingUtil.JavascriptEncode = function( str ){
  39. var encodedStr="";
  40. for (var i = 0; i < str.length; i++) {
  41. switch(str.charAt(i))
  42. {
  43. case '\'':
  44. encodedStr += "\\\'";
  45. break;
  46. case '"':
  47. encodedStr += "\\\"";
  48. break;
  49. case '\\':
  50. encodedStr += "\\\\";
  51. break;
  52. default:
  53. encodedStr += str.charAt(i);
  54. break;
  55. }
  56. }
  57. return encodedStr;
  58. }
  59. CEncodingUtil.UrlEncode = function( str ) {
  60. var encodedStr = escape(str);
  61. encodedStr = encodedStr.replace(/\+/g, "%2b");
  62. return encodedStr;
  63. }
  64. CEncodingUtil.EncodeStrOperand = function( str ) {
  65. var encodedStr = str.replace(/\t/g, "\\t");
  66. encodedStr = encodedStr.replace(/\"/g, "\\042");
  67. return encodedStr;
  68. }
  69. CEncodingUtil.EscapeQuote = function( str ){
  70. var encodedStr = "";
  71. for (var i = 0; i < str.length; i++) {
  72. switch(str.charAt(i))
  73. {
  74. case '"':
  75. encodedStr += "&quot;";
  76. break;
  77. default:
  78. encodedStr += str.charAt(i);
  79. break;
  80. }
  81. }
  82. return encodedStr;
  83. }
  84. //Xalan escapes extended characters that are sometime not unescaped by browser.
  85. //This function provides a workaround to force browser to unescape the str.
  86. CEncodingUtil.ForceUnescape = function( str ){
  87. var sUnescape = "<INPUT value=\"" + CEncodingUtil.ReplaceQuoteAndSpace(str, 0) + "\"/>";
  88. var p = document.createElement("P");
  89. p.innerHTML = sUnescape;
  90. sUnescape = CEncodingUtil.ReplaceQuoteAndSpace(p.childNodes[0].value, 1);
  91. return sUnescape;
  92. }
  93. //opt: 0 - encode quote and space; 1 - decode quote and space
  94. CEncodingUtil.ReplaceQuoteAndSpace = function( str, opt ){
  95. var sResult, quotPattern, quotReplace, spacePattern, spaceReplace;
  96. if(opt == 0)
  97. {
  98. quotPattern = RegExp("\"", "g");
  99. quotReplace = "_quot_holder";
  100. spacePattern = RegExp(" ", "g");
  101. spaceReplace = "_space_holder";
  102. }
  103. else
  104. {
  105. quotPattern = RegExp("_quot_holder", "g");
  106. quotReplace = "\"";
  107. spacePattern = RegExp("_space_holder", "g");
  108. spaceReplace = " ";
  109. }
  110. sResult = str.replace(quotPattern, quotReplace);
  111. sResult = sResult.replace(spacePattern, spaceReplace);
  112. return sResult;
  113. }