{"record":{"id":"4cd9cd94c23c9d94","repo":"EllanJiang/GameFramework","slug":"encoding-is-invalid","errorCode":null,"errorMessage":"Encoding is invalid.","messagePattern":"Encoding is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Utility/Utility.Converter.cs","lineNumber":740,"sourceCode":"                return GetBytes(value, Encoding.UTF8, buffer, startIndex);\n            }\n\n            /// <summary>\n            /// 以字节数组的形式获取指定编码的字符串。\n            /// </summary>\n            /// <param name=\"value\">要转换的字符串。</param>\n            /// <param name=\"encoding\">要使用的编码。</param>\n            /// <returns>用于存放结果的字节数组。</returns>\n            public static byte[] GetBytes(string value, Encoding encoding)\n            {\n                if (value == null)\n                {\n                    throw new GameFrameworkException(\"Value is invalid.\");\n                }\n\n                if (encoding == null)\n                {\n                    throw new GameFrameworkException(\"Encoding is invalid.\");\n                }\n\n                return encoding.GetBytes(value);\n            }\n\n            /// <summary>\n            /// 以字节数组的形式获取指定编码的字符串。\n            /// </summary>\n            /// <param name=\"value\">要转换的字符串。</param>\n            /// <param name=\"encoding\">要使用的编码。</param>\n            /// <param name=\"buffer\">用于存放结果的字节数组。</param>\n            /// <returns>buffer 内实际填充了多少字节。</returns>\n            public static int GetBytes(string value, Encoding encoding, byte[] buffer)\n            {\n                return GetBytes(value, encoding, buffer, 0);\n            }\n\n            /// <summary>","sourceCodeStart":722,"sourceCodeEnd":758,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Utility/Utility.Converter.cs#L722-L758","documentation":"Utility.Converter.GetBytes(string value, Encoding encoding) throws this when the encoding parameter is null. The method simply delegates to encoding.GetBytes(value), so a null encoding would cause a NullReferenceException; the explicit GameFrameworkException gives a clearer, fail-fast diagnostic instead.","triggerScenarios":"Calling Utility.Converter.GetBytes(\"text\", null) — typically when the encoding comes from config, a lookup by name (Encoding.GetEncoding returning null in custom wrappers), or an uninitialized static field.","commonSituations":"Encoding chosen from settings where the name is invalid or missing; a helper class whose Encoding field is initialized only in one constructor; cross-platform code assuming a default encoding exists.","solutions":["Pass an explicit encoding such as Encoding.UTF8 at the call site.","If the encoding comes from config, fall back to Encoding.UTF8 when the configured value is missing/invalid.","Fix the encoding lookup (e.g. Encoding.GetEncoding throws for bad names — handle it and use a default).","Initialize static/shared Encoding fields in static constructors so they are never null."],"exampleFix":"// before\nvar bytes = Utility.Converter.GetBytes(text, configuredEncoding);\n// after\nvar bytes = Utility.Converter.GetBytes(text, configuredEncoding ?? Encoding.UTF8);","handlingStrategy":"validation","validationCode":"if (encoding == null) encoding = Encoding.UTF8;","typeGuard":"bool IsValidEncoding(Encoding encoding) => encoding != null;","tryCatchPattern":"try { bytes = Utility.Converter.GetBytes(text, encoding); }\ncatch (GameFrameworkException ex) { bytes = Utility.Converter.GetBytes(text, Encoding.UTF8); }","preventionTips":["Default to Encoding.UTF8 whenever an encoding is optional","Validate encoding names from config at startup","Initialize Encoding fields in static constructors so they are never null"],"tags":["null-argument","encoding","configuration"],"backgroundTag":"null-argument","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}