I noticed that after joining a table to a shape file the headers of each fields in the table used for the join are changed by QGIS and they are attributed to a different name. For instance, i had a shape file with vegetation_codes and a table with vegetation_codes and veg_definition (these were the headers). After joining the table to the shape file and also saving the shape file and creating a new one, the vegetation_classes header was changed into vegetati_1. Is there a way to keep the original headers? Notice: i am using QGIS dufour on windows 7 and teh table that i join to the shape file is csv (tried with dbf as well and the problem is the same)
No, you cannot keep the original names. The problem is that DBF files and therefore Shapefile attribute tables have a limit of 10 characters for the column names.
When you join two layers, QGIS constructs new attribute names by combining layer and attribute names of the joined layer. To ensure unique column names, QGIS further adds a running number to the end of the name.
You'll have to rename the columns in the resulting file manually. The Table Manager plugin allows easy renaming.