Durante el desarrollo de un sistema web con ASP.NET 2.0, se presentaron problemas al integrar el editor Fckeditor en entornos con nombres de proyecto en caracteres chinos. Al ejecutar la aplicación localmente, como en http://localhost:1690/sistema-de-pedidos/, el editor no podía cargar archivos XML esenciales, mostrando el error "Error loading '/fckeditor/fckstyles.xml'".
El origen del problema radica en la generación dinámica de rutas dentro del script de Fckeditor. El archivo fckeditorcode_ie.js construye la variable FCKConfig.BasePath basada en la ubicación del navegador, y luego deriva FCKConfig.EditorPath a través de una operación de reemplazo. Esta ruta se utiliza posteriormente para cargar recursos como fckstyles.xml en fckconfig.js.
El código original para determinar la ruta base del editor se modifica aquí con nombres de variables alterados y estructura simplificada:
var editorConfiguration = FCK.Config;
var browserProtocol = document.location.protocol;
var basePath;
if (browserProtocol === 'file:') {
let rawPath = decodeURIComponent(document.location.pathname.substr(1));
let normalizedPath = rawPath.replace(/\\/g, '/');
let fullProtocolMatch = document.location.href.match(/^(file:\/{2,3})/);
let fullProtocol = fullProtocolMatch ? fullProtocolMatch[1] : 'file://';
if (FCKBrowserInfo.IsOpera) {
fullProtocol += 'localhost/';
}
basePath = fullProtocol + normalizedPath.substring(0, normalizedPath.lastIndexOf('/') + 1);
} else {
basePath = browserProtocol + '//' + document.location.host + document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/') + 1);
}
editorConfiguration.BasePath = basePath;
editorConfiguration.FullBasePath = basePath;
editorConfiguration.EditorPath = basePath.replace(/editor\/$/, '');
En pruebas, tanto URLs con caracteres chinos sin codificar como sus equivalentes codificados en percent-encoding fallaban al cargar los XML. La solución implicó aplicar codificación URI a la ruta generada antes de concatenar el nombre del archivo. Se ajustaron las asignaciones de rutas para los archivos XML relevantes:
editorConfiguration.StylesXmlPath = encodeURI(editorConfiguration.EditorPath) + 'fckstyles.xml';
editorConfiguration.TemplatesXmlPath = encodeURI(editorConfiguration.EditorPath) + 'fcktemplates.xml';
Con esta modificación, los archivos XML se cargaron correctamente, incluso cuando la ruta del sitio contenía caracteres no ASCII. En proyectos con estructuras de directorios similares, basta con ajustar la línea que define EditorPath como se mostró anteriormente.
Adicionalmente, se identificó un problema relacionado con ASP.NET 2.0: el uso de nombres de cookies con caracteres chinos en entornos IIS6 provocaba pérdida de datos cuando las URLs incluían parámetros de consluta. Se observó que el contenido de las cookies aparecía codificado incorrectamente en Windows Server 2003, aunque en el servidor de desarrollo de Visual Studio 2005 no ocurría. La solución requería codificar y decodificar explícitamente los nombres de cookies usando HttpUtility.UrlEncode y HttpUtility.UrlDecode, respectivamente, para garantizar la persistencia de los datos.