Caracteres especiales
Cuando se trata de generar nombres de carpetas, archivos o URL, hay que poner especial cuidado ya que dependiendo de los caracteres empleados:
- No es posible se acceder a la carpeta, archivo o URL.
- Se genera otro nombre de archivo o carpeta lo cual hace que el recurso sea inaccesible.
Hay que tener en cuenta por ejemplo que si bien una palabra puede ser escrita usando cualquier carácter o incluso palabras reservadas estas pueden causar problemas.
En general se recomienda emplear el juego de caracteres estándar no reservado con objeto que no se emplee codificación alguna y que los nombres sean fáciles de entender.
. , ¨ # $ % ¡ ! ¬ \ / : ; * ¿ ? ` " < > | ' & + - ^ ~
La manera más recomendada de trabajar, es emplear el juego de caracteres normales (sin acentos caracteres especiales). El problema es que ya no se logrará representar lo que se se desea ya que una solución u otra si permite para algunos pero no para otros.
Un simple ejemplo puede mostrar lo que se está mencionando con mayor claridad. Se empleará algunos nombres de objetos, comúnmente empleados y se contrastará con su respectiva codificación URL [1]
Tabla 1 ejemplo de caracteres especiales en palabras comunes
Texto |
Codificación URL |
Codificación HTML (1) |
|
Perno 3/4" |
Perno%203%2F4%22 |
Perno 3/4 " |
/ no se puede en ningún sistema operativo, “ no se puede usar en Windows, web |
Lámina inox 1/2" |
L%C3%A1mina%20inox%201%2F2%22 |
Lámina inox 1/2" |
Acento, espacio, doble cremilla se debe codificar |
calibre N°2 |
calibre%20N%C2%B02 |
calibre N °2 |
Espacio, signo grado se debe codificar |
eje 4'F |
eje%204%27F |
eje 4'F |
|
Tramo 4-5 |
Tramo%204-5%20 |
|
|
Segmento 4+6 |
Segmento%204%2B6 |
|
|
Tubería Schedule #2 |
Tuber%C3%ADa%20Schedule%20%232 |
|
|
Caño 3" |
Ca%C3%B1o%203%22 |
|
|
Ø 2“ |
%C3%98%202%E2%80%9C |
|
|
Obs:
- Se emplea el equivalente en código HTML del carácter para aquellos no de acuerdo con el código ASCII del carácter, hay veces que hay otros alternos como por ejemplo para cremillas(“) código ascii 34 se puede usar " o " . Un código muy usado es HTML UTF-8 el cual es compatible con ASCII para caracteres convencionales
La apuesta de e-NDICC es usar un código simplificado donde no se permita el uso de ciertos caracteres que darán problema en una un otra plataforma o tecnología y se simplifique su representación.
Se distingue de una transformación orientada a definir como quedará el nombre de la ruta o archivo y que se aprecia en pantalla.
En pantalla solamente se cambiará el caracter de cremilla simple (') por acento (´) y cremilla doble (") por doble acento (´´). Esto debido a las restriciones en manipular los datos de base de datos.
En el nombre de la ruta se empleará más cambios para que no haya problemas con la codificación que hace para URL y HTML
Caracter |
Transformación de caracter usado en pantalla y rutas |
|
|||||||||||||||||||||||
real |
|
/ |
" |
' |
{ |
} |
( |
) |
[ |
] |
- |
+ |
* |
# |
á |
é |
í |
ó |
ú |
Á |
É |
Ó |
Ú |
ñ |
Ñ |
usado en pantalla |
|
/ |
´´ |
´ |
{ |
} |
( |
) |
[ |
] |
- |
+ |
* |
# |
á |
é |
í |
ó |
ú |
Á |
É |
Ó |
Ú |
ñ |
Ñ |
transformado en ruta |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
_ |
a |
é |
i |
o |
u |
A |
E |
O |
U |
n |
N |
Texto real |
Visualización y almacenamiento BD |
URL |
|
Perno 3/4" |
Perno 3/4´´ |
Perno_3_4´´ |
Se usa doble acento para pulgada, se cambia espacio y división por “_” |
Lámina inox 1/2" |
Lámina inox 1/2´´ |
Lamina_inox_1_2_ |
se cambia cremilla doble (") por doble acento agudo (´´) |
calibre N°2 |
|
|
|
eje 4'F |
|
|
|
Tramo 4-5 |
|
|
|
Segmento 4+6 |
|
|
|
Tubería Schedule #2 |
|
|
|
Caño 3" |
|
|
|
Ø 2“ |
|
|
|
En donde reside el servidor se ha hecho la prueba de un archivo con acento
Dropbox (medio de almacenamiento remoto empleado en e-NDICC) , permite almacenar un nombre de archivo con acento y visualizarlo sin usar codificación especial
Fig 1011 Extracto de pantalla muestra url con nombre con "´" (acento) sin problemas en explorador (lectura directa)
Fig 1012 Extracto de pantalla muestra archivo con nombre con "´" (acento) sin problemas sistema dropbox.
Por lo general se recomienda emplear el código normal de caracteres
Sección RFC 3986, 2.3 Caracteres No Reservados (enero de 2005) |
|||||||||||||||||||||||||
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
- |
_ |
. |
~ |
|
y no emplear el juego de caracteres reservado de ellos
Sección RFC 3986, 2.2 Caracteres Reservados (enero de 2005) |
|||||||||||||||||
! |
* |
' |
( |
) |
; |
: |
@ |
& |
= |
+ |
$ |
, |
/ |
? |
# |
[ |
] |
ya que algunos no están permitidos y/o sirven para acciones adicionales.
Muchas veces se emplean fuentes para representar en un texto un carácter especial por ejemplo Ø 2 (que puede ser symbol para diametro) pero en texto plano es necesario codificar
Se muestra un breve listado de los principales sistemas operativos y sistemas de archivos. Hay sistemas operativos que pueden emplear diversos sistemas de archivos y por ende estas descripciones pueden variar de acuerdo al que se emplee específicamente
Windows [1],[2],[3],[6]
Windows no permite usar ciertos nombres de caracteres
- No emplear estos caracteres \,/,:,*,?,",<,>,|
- No deben contener estas palabras CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.
- No debe contener blancos al comienzo
- Caracteres no imprimibles del código ASCII con códigos del (0-31)
- Windows no distingue Mayúsculas y minúsculas por lo que no se podría crear en un directorio un archivo Perno.jpg y perno.jpg
En el caso de Onedrive o Sharepoint se tiene restricciones adicionales en los nombres que evitan el uso de
- No emplear estos caracteres #,%,&,; [3]
MAC OS X [4],[5]
- No emplear estos caracteres : /
UNIX [5]
- No emplear estos caracteres /
- Caracteres no imprimibles del código ASCII con código 0 (byte null)
- Unix Si distingue mayusculas de minusculas, por lo que en un directorio podria estar un archivo Perno.jpg junto a perno.jpg
WEB (URL)
El programa e-NDICC hace uso de recursos en la nube (por ejemplo una imagen, reporte, etc) y esta se accede por medio un identificador de recursos uniforme (URL) el cual sintetiza la localización y ubicación (en que máquina esta y que carpeta y archivo esta) del recurso de manera única e inequívoca.
Su definición es mucho más compleja e involucra otros protocolos y definiciones que no es el caso mencionar ahora. Cuando se emplea y se presentan caracteres reservados se emplea una codificación porcentual que permite su logro pero dificulta su comprensión.
Así por ejemplo, el "/", por ejemplo, se utiliza normalmente como un corponente de "ruta", tiene el significado especial de ser un delimitador entre segmentos de ruta, entonces los tres caracteres "%2F" (or "%2f") deben ser usados en el segmento en lugar de "/".
En el caso de "+" o "-" estos pueden ser interpretados como símbolos matemáticos en strings que empleen javascript
Caracteres reservados después de la codificación porcentual |
|||||||||||||||||
! |
# |
$ |
& |
' |
( |
) |
* |
+ |
, |
/ |
: |
; |
= |
? |
@ |
[ |
] |
%21 |
%23 |
%24 |
%26 |
%27 |
%28 |
%29 |
%2A |
%2B |
%2C |
%2F |
%3A |
%3B |
%3D |
%3F |
%40 |
%5B |
%5D |
Caracteres comunes tras la codificación porcentual (basada en ASCII o UTF-8) |
|||||||||||||||
nueva línea |
espacio |
" |
% |
- |
. |
< |
> |
\ |
^ |
_ |
` |
{ |
| |
} |
~ |
%0A or %0D or %0D%0A |
%20 |
%22 |
%25 |
%2D |
%2E |
%3C |
%3E |
%5C |
%5E |
%5F |
%60 |
%7B |
%7C |
%7D |
%7E |
Referencia
[1] https://www.urlencoder.org/es/
[2] https://www.abogacia.es/faq/cuales-son-las-restricciones-a-la-hora-de-nombrar-carpetas-y-ficheros-en-onedrive/
[3] https://support.microsoft.com/es-es/office/restricciones-y-limitaciones-en-onedrive-y-sharepoint-64883a5d-228e-48f5-b3d2-eb39e07630fa?ui=es-es&rs=es-co&ad=co#invalidcharacters
[4] https://superuser.com/questions/326103/what-are-invalid-characters-for-a-file-name-under-os-x
[5] https://stackoverflow.com/questions/1976007/what-characters-are-forbidden-in-windows-and-linux-directory-names
[6]https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file